Страница 1 из 2
MySQL encoding кошмар
Добавлено: 09 сен 2006, 23:41
Котяр
пытаюсь запихнуть в базу sql файл с русским текстом, получаю одни "????..???"

конвертнул файл в utf8: MySQL ругается - типа какая-то загогулина неизвестно откуда появляется перед INSERT
как с этим бороться

Добавлено: 10 сен 2006, 00:41
bormo
попробовал повторить - через php запихивается нормально, mysql 3 на rhe 3 php 4.2. Русская локаль не установлена.
Скорее по дороге где-то какой-то драйвер режет. Хотя на 100% не уверен. А что в my.cfg написано?
Добавлено: 10 сен 2006, 00:48
Котяр
bormo писал(а):попробовал повторить - через php запихивается нормально, mysql 3 на rhe 3 php 4.2. Русская локаль не установлена.
Скорее по дороге где-то какой-то драйвер режет. Хотя на 100% не уверен. А что в my.cfg написано?
если бы у меня был доступ к my.cfg

вообще задача стоит запихать все в utf8 через phpMyAdmin, но у меня вообще ни в какой кодировке не получается

Добавлено: 10 сен 2006, 00:57
bormo
Я пробовал через него - выбрал в меню phpmyadmin language
Russian (ru-win1251),
и все работает.
А с юникодом не знаю...
Добавлено: 10 сен 2006, 01:24
Otto
Проверь какие кодировки установлены в базе:
SHOW VARIABLES LIKE 'character_set%';
должна быть та же кодировка в которой написан sql файл
Добавлено: 10 сен 2006, 01:35
Котяр
Otto писал(а):Проверь какие кодировки установлены в базе:
SHOW VARIABLES LIKE 'character_set%';
должна быть та же кодировка в которой написан sql файл
в базе везде стоит utf8 кроме (character_set_server latin1 ). Как определить в какой кодировке sql файл?

Пробовал конвертировать в Notepad++, UltraEdit - no luck

phpMyAdmin ругается на какой-то символ перед INSERT - хотя ничего там нет
вот кусок самого файла в его оригинальной кодировке
Добавлено: 10 сен 2006, 10:19
Otto
Оригинальная кодировка твоего файла - windows 1251.
При переводе в UTF-8 блокнот вставляет в начало файла 3 байта: EF BB BF. Это признак файла в кодировке UTF-8.
Попробуй просто удалить их или заменить на пробелы.
Добавлено: 10 сен 2006, 13:15
Котяр
Otto писал(а):Оригинальная кодировка твоего файла - windows 1251.
При переводе в UTF-8 блокнот вставляет в начало файла 3 байта: EF BB BF. Это признак файла в кодировке UTF-8.
Попробуй просто удалить их или заменить на пробелы.
чем их можно удалить если ни блокнот, ни Notepad++, ни UltraEdit эти символы не показывают?

чего я только не делал, а 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

Добавлено: 10 сен 2006, 17:32
ura
А тебе надо по этому полю контекстный поиск делать? Если нет то можно и как base64 encoded хранить.
Добавлено: 10 сен 2006, 17:38
Котяр
ura писал(а):А тебе надо по этому полю контекстный поиск делать? Если нет то можно и как base64 encoded хранить.
это не поле - это таблица из ~2000 полей руссификации сайта. Мне надо эти данные воткнуть в базу, желательно в utf8
Добавлено: 10 сен 2006, 18:59
Otto
Котяр писал(а):чем их можно удалить если ни блокнот, ни Notepad++, ни UltraEdit эти символы не показывают?
При открытии блокнотом внизу выбери кодировку ANSI, тогда он покажет эти три символа в начале. Удали их, сохрани и открой как utf8, посмотри что получилось. У меня работает.
Другой вариант - редактор Far
Добавлено: 10 сен 2006, 19:28
Котяр
Otto писал(а): При открытии блокнотом внизу выбери кодировку ANSI, тогда он покажет эти три символа в начале. Удали их, сохрани и открой как utf8, посмотри что получилось...
сработало

СПАСИБО

ты настоящий шаман

Добавлено: 10 сен 2006, 19:38
Otto
Да не за что

Добавлено: 11 сен 2006, 12:43
Котяр
Otto, а в mySQL вообще существует "utf8_unicode_cs"

или только "utf8_unicode_ci"

Добавлено: 11 сен 2006, 15:10
Otto
Котяр писал(а):Otto, а в mySQL вообще существует "utf8_unicode_cs"

или только "utf8_unicode_ci"

utf8_unicode_cs к сожалению нет.
Используй uft8_bin для достижения эффекта case sensitive
