>  기사  >  데이터 베이스  >  MySQL에 저장된 전자와 반각 문자의 차이점에 대한 자세한 설명

MySQL에 저장된 전자와 반각 문자의 차이점에 대한 자세한 설명

黄舟
黄舟원래의
2017-05-28 09:55:223109검색

본 글은 MySQL전각자와 반각자의 저장 차이에 대한 내용을 주로 소개합니다. 필요하신 분들은 참고하시면 됩니다.

안타깝게도 회사에서 IM 내부 테스트 중 MYSQL_DATA_TRUNCATED 오류가 다시 발생했습니다. . 로그 기록은 여전히 ​​mysql_stmt_fetch에 있습니다. 호출되면 나타납니다. 이전 경험으로 볼 때, 주어진 결과 세트의 바인딩 영역 길이가 부족하여 발생하는 것으로 여러 번 확인했지만 문제가 없었습니다. 코드에는 char(20)과 같은 해당 관계가 있습니다. 내 코드에서는 저장할 char buffer[20]array를 정의하겠습니다. 정말 옳고 완벽해 보입니다. 어쩔 수 없이 데이터의 각 행을 인쇄하고, 오류가 보고된 레코드의 행을 찾아보니 글꼴이 다른 행과 다르다는 것을 발견했습니다. 예:

123456789(반각)
123456789(전각)

이것은 제가 공백을 입력하는 방식이 아니라 전각, 반각 입력 방식으로 제어됩니다. 전각 문자의 경우 반각 문자 길이의 두 배이고 내 MySQL은 utf-8을 사용하므로 데이터베이스에서는 3바이트 길이의 전각 문자입니다.

select length(column) from table_name where…;

이것으로 길이를 인쇄해서 판단하시면 됩니다. 이때, 코드에 있는 타입의 길이와 전자나 한자 등 데이터베이스 필드의 길이를 일치시키는 문제를 고려해야 합니다. 데이터베이스의 Char(20)은 20바이트가 아닌 20자를 나타냅니다. 여기서 데이터를 가져올 때 데이터를 가져오는 결과 세트 길이로 20자를 모두 사용하지 마십시오.

위 내용은 MySQL에 저장된 전자와 반각 문자의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.