MySQL превращается ™ в ª? - PullRequest
       5

MySQL превращается ™ в ª?

0 голосов
/ 13 января 2011

Я экспортирую файл Excel в CSV, а затем загружаю в базу данных MySQL, но каждая запись, имеющая ™ (товарный знак), превращается в маленькую (().

База данных установлена ​​в utf8_unicode_ci, как и каждая строка. Есть идеи, почему это происходит до сих пор?

Ответы [ 3 ]

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

Есть более простой способ сделать преобразование.Если вы используете Windows, вы можете бесплатно загрузить текстовый редактор, например Notepad ++, а Notepad ++ может закодировать или преобразовать текстовый файл в UTF-8 (в строке меню перейдите в Encoding, переключитесь на тот, который вам нужен).

То же самое возможно и с редактором Mac, таким как TextMate.Файл> Повторно открыть с кодировкой.

Excel действительно автоматически кодирует файл , созданный из Excel в формате Windows.Однако, если он используется для открытия файла, использующего другую кодировку, он должен сохранить эту кодировку;он не будет конвертировать файлы в кодировке UTF-8 в Windows-1252.

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

Если в моджибаке есть замена 1-1, маловероятно, что задействован UTF-8.

Похоже, что исходные данные были в одной из кодировок Macintosh , где '™' кодируется в 0xAA и были неправильно интерпретированы как windows-1252 ( windows-1254 и -1258 и ISO-8859-1 , -9 и -15 также возможны), где декодирование 0xAA в 'ª'.

0 голосов
/ 13 января 2011

Проблема в том, что файл Excel CSV (скорее всего) в формате Windows-1252.

Таким образом, вам, скорее всего, потребуется использовать PHP для преобразования каждого элемента в формат UTF-8 с помощью такой функции, как mb_convert_variables

Например:

$utfVersion = mb_convert_variables('UTF-8', 'Windows-1252', $windowsVersion);

Кстати, может по-прежнему некорректно отображаться, если вы просматриваете таблицу MySQL с помощью инструментов командной строки и т. Д., Но все будет хорошо, как только вы вернете ее обратно в PHP.

...