У базі варто utf8 а сам текст в сз1551 що робити?
Доповнено (1). НЕ тисячі п'ятсот п'ятьдесят одна а 1 251 :)
Доповнено (2). який запит виконати на зміну кодування?
Доповнено (3). через phpmyadmin
Доповнено (4). none7
ти в правильному напрямку як правильно написати запит?
база: u39786_4
потрібна кодування: UTF8
Доповнено (5). а якщо всю базу потрібно перекодувати?
Доповнено (6). mysql
Яка база? Як правило при з'єднанні ви можете явно задати кодування
наприклад mysql
mysql_query ( "SET NAMES utf8");
SET NAMES кодування
або якщо ви працюєте через php
mysql_set_charset ( "utf8");
краща відповідь На мою логічніше перекодувати текст в базі в правильний метод кодування. Просто змінити кодування поля не можна, дані будуть безповоротно втрачені. Коли я стикався з подібним знайшов ось такий милицю.
SELECT CONVERT (UNHEX (HEX ( 'Text'. Using cp1251) FROM Table LIMIT 1;
Вважаю, що можна написати запит на кшталт UPDATE Table SET Text = CONVERT (UNHEX (HEX ( 'Text'. Using cp1251). Але перед перевіркою настійно рекомендую зробити backup таблиці.
Доповнення # 4
База тут взагалі ні при чому, використовую UPDATE запит описаний вище, але заміни Table на ім'я своєї таблиці, а Text на ім'я поля в цій таблиці. Кодування теоретично повинна сама виставиться, але якщо буде помилка, то спробуй CONVERT (CONVERT (UNHEX (HEX ( 'Text'. Using cp1251) using utf8).
Доповнення № 5
То доведеться для кожної таблиці писати UPDATE Table SET column1 = convert (...), column2 = convert (...), column3 = convert (...), ... Де columnX імена полів вимагають конвертації. Ну або написати скрипт який буде конвертувати всі поля типу char і varchar для кожної таблиці бази.
Витяг з документації PostgreSQL:
--- BEGIN ---
Using SET client_encoding TO. Setting the client encoding can be done with this SQL command:
SET CLIENT_ENCODING TO 'value';
Also you can use the standard SQL syntax SET NAMES for this purpose:
SET NAMES 'value';
To query the current client encoding:
SHOW client_encoding;
To return to the default encoding:
RESET client_encoding;
--- END ---
а після цього треба використовувати pg_escape_string ($ connect, $ string) для конструювання запитів містять текстові рядки.
P.S. За іншими СУБД не скажу не займався якось.