Требуется кодировка MySQL - PullRequest
1 голос
/ 25 января 2011

Я разрабатываю приложение для изучения родного языка. Мне нужно хранить некоторые символы как «ẽũ». В моей базе данных установлена ​​кодировка utf-8 с сопоставлением по умолчанию, а также таблица, на которую влияют эти символы.

Проблема в том, что я пытаюсь добавить строку, используя обычную вставку SQL:

INSERT INTO text(spanish,guarani) VALUES('text','ẽũ');

Это выдает предупреждение:

Warning Code : 1366 Incorrect string value: '\xE1\xBA\xBD\xC5\xA9' for column 'guarani' at row 1

И результат "??" где есть эти символы.

Вопрос: Эти символы не включены в кодировку UTF-8? Какой мне нужен?

Примечание: та же проблема с латиницей-1

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 января 2011

БЫСТРЫЙ !!!Читать http://www.joelonsoftware.com/articles/Unicode.html

Требуется чтение.

После прочтения вы должны спросить себя:

  1. В какой кодировке используется соединение.
  2. Какая локаль используется для сопоставления.(Если применимо).
  3. В какой кодировке находится оператор SQL?
  4. В какой кодировке содержатся строковые литералы?
  5. В какой кодировке представлена ​​HTML-форма?
0 голосов
/ 25 января 2011

Как и другим ответом, вы действительно должны прочитать и понять основы Unicode. Это не сложно, (в один прекрасный день вы можете понять это), это требует знаний почти для каждого программиста (и, конечно, для вас), это не эфемерное знание и сделает вашу жизнь проще и счастливее.

Эти символы не охватываются кодировка UTF-8?

UTF-8 - это кодировка Unicode, Unicode охватывает (практически) каждый символ. Кодировка utf8 в MYSQL, с другой стороны, не является истинной UTF-8, она пропускает некоторые символы (например, вне BMP). Но это не твоя проблема здесь.

http://www.fileformat.info/info/unicode/char/1ebd/index.htm http://www.fileformat.info/info/unicode/char/169/index.htm

Вы видите там, что ваши два символа являются действительными Unicode, находятся внутри BMP (следовательно, Mysql, искалеченный 'utf8' должен их поддерживать), и вы даже можете увидеть его кодировку UTF-8. И, как видите, \xE1\xBA\xBD\xC5\xA9 кажется правильным. Так что проблема, похоже, в другом месте. Вы уверены, что ваша БД - это utf8?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...