MySQL의 마이크로 채널 별 특수 기호 원인에 저장 (잘못된 문자열 값 "열 '이름'xxxx'for 행 1에서) 이상

오늘 세일즈맨 반응, 편집, 사용자의 정보가 때 예외가되고있다 예외 정보를 다음과 같이 구성된다 :
여기에 잘못된 문자열 값에 "xFOx9Fx92x9D vxE6 .. 'F 또는 열'이름 'AT 행 1
내가 볼 수있는 스크린 샷을 보내 그녀에게 물었다, 그것은 사용자의 별명으로 다음 것을 알 수 있었다 :

작품

예외가 데이터베이스에 의해 발생되기 때문에, 별명은 마이크로 채널 별명이지만, 또한 약간 일부 특수 기호를 가져올 것 또는, 우리는 필드의 문자 세트를보고 할 수 있습니다 :

너무

1-6 바이트에서 UTF-8 형식의 초기 사용은 최대 31 개 문자 인코딩 될 수있다. UTF-8의 최신 사양을 하나의 4 바이트, 최대는 모든 유니 코드면 (17)을 대표하는 21 캔 코딩.

MySQL의 UTF-8은 UTF-8 문자, 실질적으로 평면, 여러 유니 코드 문자 인에서 3 바이트를 지원, 문자 집합입니다.

UTF8에서 MySQL의는 UTF-8 문자에 3 바이트를 들고 지원하는 이유는 무엇입니까? 나는 아직 말을하지 않은 유니 코드 보조 비행기를 개발하기 시작 MySQL을 것이다 아마 때문에, 잠시 생각했다. 그 때, 유니 코드위원회는 또한 "65535 개 문자만큼 세상이 단어를 사용 주위에"꿈하고. 문자 수의 MySQL의 문자열 길이가 데이터 유형에 대한 바이트 수보다는 계산됩니다 CHAR는 필요 문자열을 유지하기 위해 충분히 수있다. UTF8 문자 집합이 가장 긴 문자 길이의 길이를 유지하기 위해 필요, 곱한 UTF8 문자열 길이 그래서 여기 UTF8 자연스럽게 CHAR (100)와 같은 3의 최대 길이를 제한 MySQL의 길이는 300 바이트를 유지합니다. 후속 버전으로 왜 안 UTF-8 4 바이트 지원의 문자, 난 정말 거의 사용되지 기본 다국어 평면을 넘어 문자가, 하나는 이전 버전과의 호환성을 위해 생각합니다.

要在 Mysql 中保存 4 字节长度的 UTF-8 字符,需要使用 utf8mb4 字符集,但只有 5.5.3 版本以后的才支持(查看版本: select version();)。我觉得,为了获取更好的兼容性,应该总是使用 utf8mb4 而非 utf8. 对于 CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 Mysql 官方建议,使用 VARCHAR 替代 CHAR。

我们尝试作出修改:

将utf8字符集修改为utf8mb4之后,通知业务员重新操作。业务员反应操作成功了。。。心里美滋滋

추천

출처www.cnblogs.com/yn869251541/p/12331224.html