Страница 1 из 2

MySQL encoding кошмар

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

как с этим бороться :roll:

Добавлено: 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 файл? :roll: Пробовал конвертировать в Notepad++, UltraEdit - no luck :evil: phpMyAdmin ругается на какой-то символ перед INSERT - хотя ничего там нет :-x вот кусок самого файла в его оригинальной кодировке

Добавлено: 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 эти символы не показывают? :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

Добавлено: 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, посмотри что получилось...
сработало :dance: СПАСИБО :pray: ты настоящий шаман :D

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

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

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

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