[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: