Будьте осторожны! Если у Вас на самом деле есть utf, сохраненный как другое кодирование, у Вас могла бы быть реальная путаница на Ваших руках. Создайте резервную копию сначала. Тогда попробуйте некоторые стандартные методы:
, например http://www.cesspit.net/drupal/node/898 http://www.hackszine.com/blog/archive/2007/05/mysql_database_migration_latin.html
я должен был обратиться к преобразованию всех текстовых полей к двоичному файлу, затем обратно к varchar/text. Это сохранило мою задницу.
у меня были данные, UTF8, сохраненный как latin1. Что я сделал:
индексы Отбрасывания. Преобразуйте поля в двоичный файл. Преобразуйте в utf8-общий ci
, Если Ваш на ЛАМПЕ, don’t забывает добавлять команду NAMES набора прежде, чем взаимодействовать с дб и удостовериться, что Вы устанавливаете заголовки кодировки символов.
Из http://msdn.microsoft.com/en-us/library/ms176089.aspx
varchar [(n | max)] Символ переменной длины, не поддерживающий Юникод данные. n может быть значением от 1 до 8000. max указывает, что максимальное размер хранилища 2 ^ 31-1 байт. В размер хранилища - это фактическая длина введенные данные + 2 байта. Данные вводимая длина может составлять 0 символов. Синонимы ISO для varchar: char меняется или меняется символ.
1 символ = 1 байт. И не забудьте 2 байта для завершения. Итак, 2 ^ 31-3 символа.
См. Справочную таблицу MSDN для получения информации о максимальных числах / размерах .
Байт на varchar (макс.), varbinary (max), xml, текст или изображение column: 2 ^ 31-1
Имеется двухбайтовый заголовок для столбца, поэтому фактические данные имеют длину 2 ^ 31-3 макс. байта. Предполагая, что вы используете однобайтовую кодировку символов, всего 2 ^ 31-3 символа. (Если вы используете кодировку символов, в которой используется более одного байта на символ, разделите на общее количество байтов на символ. Если вы используете кодировку символов переменной длины, все ставки отключены.)