MySQL encoding кошмар

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
Котяр
Маньяк
Сообщения: 1545
Зарегистрирован: 02 мар 2005, 13:05
Откуда: Toronto -> Vancouver

MySQL encoding кошмар

Сообщение Котяр »

пытаюсь запихнуть в базу sql файл с русским текстом, получаю одни "????..???" :? конвертнул файл в utf8: MySQL ругается - типа какая-то загогулина неизвестно откуда появляется перед INSERT :evil:

как с этим бороться :roll:
bormo
Пользователь
Сообщения: 194
Зарегистрирован: 19 май 2006, 21:03
Откуда: + 1 604

Сообщение bormo »

попробовал повторить - через php запихивается нормально, mysql 3 на rhe 3 php 4.2. Русская локаль не установлена.

Скорее по дороге где-то какой-то драйвер режет. Хотя на 100% не уверен. А что в my.cfg написано?
Аватара пользователя
Котяр
Маньяк
Сообщения: 1545
Зарегистрирован: 02 мар 2005, 13:05
Откуда: Toronto -> Vancouver

Сообщение Котяр »

bormo писал(а):попробовал повторить - через php запихивается нормально, mysql 3 на rhe 3 php 4.2. Русская локаль не установлена.

Скорее по дороге где-то какой-то драйвер режет. Хотя на 100% не уверен. А что в my.cfg написано?
если бы у меня был доступ к my.cfg :) вообще задача стоит запихать все в utf8 через phpMyAdmin, но у меня вообще ни в какой кодировке не получается :(
bormo
Пользователь
Сообщения: 194
Зарегистрирован: 19 май 2006, 21:03
Откуда: + 1 604

Сообщение bormo »

Я пробовал через него - выбрал в меню phpmyadmin language

Russian (ru-win1251),

и все работает.

А с юникодом не знаю...
Аватара пользователя
Otto
Пользователь
Сообщения: 91
Зарегистрирован: 08 июл 2006, 23:09
Откуда: Vancouver

Сообщение Otto »

Проверь какие кодировки установлены в базе:
SHOW VARIABLES LIKE 'character_set%';

должна быть та же кодировка в которой написан sql файл
Аватара пользователя
Котяр
Маньяк
Сообщения: 1545
Зарегистрирован: 02 мар 2005, 13:05
Откуда: Toronto -> Vancouver

Сообщение Котяр »

Otto писал(а):Проверь какие кодировки установлены в базе:
SHOW VARIABLES LIKE 'character_set%';

должна быть та же кодировка в которой написан sql файл
в базе везде стоит utf8 кроме (character_set_server latin1 ). Как определить в какой кодировке sql файл? :roll: Пробовал конвертировать в Notepad++, UltraEdit - no luck :evil: phpMyAdmin ругается на какой-то символ перед INSERT - хотя ничего там нет :-x вот кусок самого файла в его оригинальной кодировке
Аватара пользователя
Otto
Пользователь
Сообщения: 91
Зарегистрирован: 08 июл 2006, 23:09
Откуда: Vancouver

Сообщение Otto »

Оригинальная кодировка твоего файла - windows 1251.

При переводе в UTF-8 блокнот вставляет в начало файла 3 байта: EF BB BF. Это признак файла в кодировке UTF-8.

Попробуй просто удалить их или заменить на пробелы.
Аватара пользователя
Котяр
Маньяк
Сообщения: 1545
Зарегистрирован: 02 мар 2005, 13:05
Откуда: Toronto -> Vancouver

Сообщение Котяр »

Otto писал(а):Оригинальная кодировка твоего файла - windows 1251.

При переводе в UTF-8 блокнот вставляет в начало файла 3 байта: EF BB BF. Это признак файла в кодировке UTF-8.

Попробуй просто удалить их или заменить на пробелы.
чем их можно удалить если ни блокнот, ни Notepad++, ни UltraEdit эти символы не показывают? :roll: чего я только не делал, а phpMyAdmin все равно выдает
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ÿþ ' at line 1
:x :x :x
ura
Житель
Сообщения: 915
Зарегистрирован: 09 мар 2003, 22:46

Сообщение ura »

А тебе надо по этому полю контекстный поиск делать? Если нет то можно и как base64 encoded хранить.
Аватара пользователя
Котяр
Маньяк
Сообщения: 1545
Зарегистрирован: 02 мар 2005, 13:05
Откуда: Toronto -> Vancouver

Сообщение Котяр »

ura писал(а):А тебе надо по этому полю контекстный поиск делать? Если нет то можно и как base64 encoded хранить.
это не поле - это таблица из ~2000 полей руссификации сайта. Мне надо эти данные воткнуть в базу, желательно в utf8
Аватара пользователя
Otto
Пользователь
Сообщения: 91
Зарегистрирован: 08 июл 2006, 23:09
Откуда: Vancouver

Сообщение Otto »

Котяр писал(а):чем их можно удалить если ни блокнот, ни Notepad++, ни UltraEdit эти символы не показывают?
При открытии блокнотом внизу выбери кодировку ANSI, тогда он покажет эти три символа в начале. Удали их, сохрани и открой как utf8, посмотри что получилось. У меня работает.

Другой вариант - редактор Far
Аватара пользователя
Котяр
Маньяк
Сообщения: 1545
Зарегистрирован: 02 мар 2005, 13:05
Откуда: Toronto -> Vancouver

Сообщение Котяр »

Otto писал(а): При открытии блокнотом внизу выбери кодировку ANSI, тогда он покажет эти три символа в начале. Удали их, сохрани и открой как utf8, посмотри что получилось...
сработало :dance: СПАСИБО :pray: ты настоящий шаман :D
Аватара пользователя
Otto
Пользователь
Сообщения: 91
Зарегистрирован: 08 июл 2006, 23:09
Откуда: Vancouver

Сообщение Otto »

Да не за что :D
Аватара пользователя
Котяр
Маньяк
Сообщения: 1545
Зарегистрирован: 02 мар 2005, 13:05
Откуда: Toronto -> Vancouver

Сообщение Котяр »

Otto, а в mySQL вообще существует "utf8_unicode_cs" :roll: или только "utf8_unicode_ci" :?:
Аватара пользователя
Otto
Пользователь
Сообщения: 91
Зарегистрирован: 08 июл 2006, 23:09
Откуда: Vancouver

Сообщение Otto »

Котяр писал(а):Otto, а в mySQL вообще существует "utf8_unicode_cs" :roll: или только "utf8_unicode_ci" :?:
utf8_unicode_cs к сожалению нет.

Используй uft8_bin для достижения эффекта case sensitive :)
Ответить