Re: Перекодировка в MySQL
On 2003.06.25 at 16:14:35 +0500, BeerBong wrote:
> Доброе время суток!
>
> Есть SQL cервер который хостит mySQL, Oracle & Postgres базы. С ними
> работают WEB сервер, на сайтах везде по умолчанию cp1251, соответственно в
> базах везде по умолчанию тоже cp1251. И всех это устраивало до того момента
> пока я в качестве своей OS не поставил Debian. (Неделю поскрипел зубами с
> конфигами fvwm и добился хорошего внешнего вида и удобства -- теперь
> практически всем доволен)
>
> В качестве локальной кодировки у себя прописал koi8. При коннекте к mySQL
> из терминала получаем БНОПНЮ. Я знаю что есть перекодировка (сервер)koi8-
> >cp1251(клиент), знаю что можно свою сделать, но не хочется трогать
Все приличные базы данных (по-моему, mysql к ним относится в данном
контексте) умеют работать с произвольным сочетанием кодировки сервера
и кодировки клиента.
Для Oracle нужно установить переменную среды
NLS_LANG=RUSSIAN_CIS.CL8KOI8R, для Postgres PGCLIENTENCODING=KOI8
При условии что сервер знает, что у него в базе кодировка 1251, все
будет удобочитаемо. Как для mysql - не знаю, так как никогд им не
пользовался.
> продакшн сервер ради этого (хотя придется если других вариантов нет). Что
> делать?
Осознать, что те утилиты, которыми ты работаешь с базами из командной
строки - это тоже клиенты.
> Кроме того еще не дошел до работы с текстовыми файлами в cp1251 кодировке.
> Еще не разбирался, хотя Cyrillic HOWTO просматривал, но не сложилось пока в
> голове четкого варианта решения.
Для работы с текстовыми файлами обычно применяется текстовый редактор.
Текстовых редакторов бывает два - vim и emacs. Оба умеют понимать, что
кодировка файла может отличаться от кодировки терминала.
> Предпочитаю vim, MCedit не хочу, монстров тоже. Как сделать поудобнее и
У вас очень правильный образ мыслей, сэр
В vim указание кодировки при загрузке текстового файла делается
посредством ++enc=что-надо в команде e или split.
У меня для выбора кодировки файла служат такие строчки в .vimrc:
"Меню кодировок
set wildmenu
set wcm=<Tab>
menu Encoding.koi8-r :e ++enc=koi8-r<CR>
menu Encoding.windows-1251 :e ++enc=cp1251<CR>
menu Encoding.ibm-866 :e ++enc=ibm866<CR>
menu Encoding.utf-8 :e ++enc=utf-8 <CR>
map <F8> :emenu Encoding.<TAB>
Соответственно, если загрузив файл, видишь, что он не читается,
жмешь <F8> и получаешь меню.
>попроще работу с редактированием файлов в разных кодировках?
>
> Виктор Вагнер писал, что прописал в меню несколько терминалов с разными
> кодировками, а как в таком случае переключается раскладка?
>
Никак. А зачем она должна как-то переключаться? Раскладка работает
на уровне X-овых keysym, и русское А это всегда Cyrillic-A.
А за то, чтобы оно превратилось в правильный 8-битный (или не-8-битный,
если это utf-8) код внутри приложения, отвечает локаль данного
приложения.
Данным называется X-овое приложение. То есть если мы запускаем vim в
xterm, то локаль должна быть выставлена именно у xterm. Если gvim - то у
самого gvim.
Reply to: