Если у вас MySQL 4.x/5.x и ЛЮБЫЕ ПРОБЛЕМЫ С РУССКИМ - ЧИТАТЬ ЭТО!

Статус
В этой теме нельзя размещать новые ответы.

Lord Daedra

Guest
да я переключал кодировки...
при выборе ISO-8859-1 чёт похожее... перекодировываются ток русские буквы, а те символы (àáâã) как были, так и остаются.

-~{}~ 22.06.05 16:10:

> Надо не в конец а отдельным запросом.
напиши для моего случая плз. Я не рублю в этом. Какой отдельный, если мне-то эта выборка нужна.

Вообще, почему тут нет примеров? Я бы по аналогии сделал бы... Хелпните кто-нибудь
 

kvasvik

Guest
Отдельным запросом это:
PHP:
mysql_query('SET NAMES "cp1251"');
(1 раз после установки соединения с базой)
и потом уже делать:
PHP:
mysql_query('SELECT column FROM table');
Хотя у тебя может в базе не та кодировка выставлена, у тебя phpMyAdmin есть?
 

Lord Daedra

Guest
я примерно так поставил, не работает...
но теперь уже почему-то кажется исправить кодировку сразу после получения данных более протым решением.
вот тут заполни форму не всю, у тя твои же данные появятся, ещё до БД, но в другой кодировке,т.е. БД ни при чём:
http://www.watchsale.org/info/index.php?option=com_x-shop&action=confirm

-~{}~ 23.06.05 11:31:

Проставил везде (в двух формах) кодировку, вверху страницы тож, даж хмл:) чё не так?
<form action="index.php?option=com_x-shop&action=check" method="post" accept-charset="Windows-1251">
или по-другому кодировку в формах выставлять надо?
 

kvasvik

Guest
Очень занятно, в первый раз вижу чтобы русские буквы заменялись на их хтмл-ные обозначения. Или это htmlspecialchars глючит, хотя у меня он всё нормально обрабатывал, или более вероятно у тебя при обработке данных из формы, где-то стоит самописная функция преобразовывающая все символы не являющиеся латинскими буквами в их хтмл-аналоги.

<form action="index.php?option=com_x-shop&action=check" method="post" accept-charset="Windows-1251">
В формах кодировку выставлять не надо. Там вроде вообще такого параметра нет. Достаточно в хеадере выставить. У тебя это сделано.
 

Lord Daedra

Guest
Я решил проблему. Там была такая строчка
$address = htmlentities($address);
По умолчанию, кодировка не наша, если её не указывать...
Но я вообще не понял, для чего она нужна лично мне и просто потёр её. Всё работает теперь.

-~{}~ 24.06.05 12:26:

эта строчка была между двумя формами, как и эта
$address = str_replace("","",$address); (перед предыдущей стояла)
но эта вроде ничё не делает, без неё тоже работает:)

> Там вроде вообще такого параметра нет.
accept-charset=
 

kvasvik

Guest
$address = htmlentities($address);
Эта строчка была нужна для того чтобы предотвратить ситуацию когда кто-нибудь введёт в твою форму хтмл тэги. Также она заменяла кавычки, теперь тебе надо вместо неё как мимнимум добавить addslashes (если её там нет) чтобы не было ошибок при попытке вставить в базу данных строки с кавычками.

$address = str_replace("","",$address);
А в кавычках ничего не было? Она ж ничего не делает...
 

confguru

ExAdmin
Команда форума
Пересобирал на клубе

Сначала надо заменить старую версию клинета на 4.1.2
make WITH_CHARSET=cp1251 WITH_XCHARSET=all WITH_COLLATION=cp1251_general_ci reinstall

Потом уже ставить сам сервер с тамики же опциями.

P.S. Если не компилить клиента с чарсетом, будут знаки вопроса, хотя сами базы будут корректными.
 

DarkDiver

Guest
Прочитал все посты. Не понял до конца. Вводные: была база и скрипты (движок) на старом мускуле (3хх), работало все ок, под виндой, перешел на линукс (ASP 10), стало все дико тормозить. Поставил ПХП 5.0.4 и мускуль 4.1.12, тормозить перестало. Сами скрипты работают без проблем (т.е. все в базу пишется как надо, без всяких там вопросов и т.д., базу восстанавливал из дампа, восстановилось тоже без проблем), еще стоит PHPMyAdmin 2.6.2, в нем все русские символы отображаются вида (буковки - над ними точечки), дамп нечетабельный, если делаешь дамп базы этим админом, а потом его же загружаешь, все буквы становятся вопросами, то же самое, если делаешь вставку данных. При этом мои скрипты без проблем вставляют и вытаскивают данные, страницы формируют без этих иероглифов. Встала проблема делать дамп - MyAdmin не может (описал), то же самое с встроенными функциями линукса - при восстановлении дампа те же вопросики, и самое противное - эти все таблицы в базе я восстановил из дампа со старой системы, создавал две новые таблицы с помощью phpMyAdmin - у меня в них скрипты пишут вопросиками! Что делать? Подскажите, пожалуйста
 

DIS

Guest
Автор оригинала: admin
DIS

[mysqld]
init-connect="SET NAMES cp1251"
а вот фигу! не работает!!!! одни вопросики..

пришлось пересобрать php --with-mysql=/usr/local/mysql
(было --with-mysql)
и тут бум.. одни вопросики..

что ж делать с этими кракозябрами????
 

kvasvik

Guest
А что вообще значит &quot;пересобрать&quot;? Это под виндами работает?
 

confguru

ExAdmin
Команда форума
DIS

Какая ос..
Компили клиента и сервер с этим опциями...
И смотри что у тебя в базе..
 

awf

Guest
у меня тоже проблема с "вопросиками".
есть база А, в ней таблицы 1 и 2
с формочки на сайте пользователи дают свои объявления, которые склыдываются в таблицу 1 и с кодировкой всё нормально.
а вот когда я клиентом или формочкой помещаю текст в таблицу 2, то в таблице сохраняются вопросики. (из формы данные передаются в нормальной читаемой кодировке)

"set names..." не помогает
mysql сервер 4.1.12
 

confguru

ExAdmin
Команда форума
awf

Поставь phpmyadmin - он корректно работает с
последними mysql
Заодно посмотришь в какой кодировке у тебя таблицы лежат.
 

awf

Guest
Автор оригинала: admin
awf

Поставь phpmyadmin - он корректно работает с
последними mysql
Заодно посмотришь в какой кодировке у тебя таблицы лежат.
поставил, посмотрел. принципиальных улучшений, по сравнению с mysqlcc, нет
кодировки обеих таблиц cp1251.
НО в обной всё нормально, а во второй нет

-~{}~ 29.06.05 14:12:

В общем является ли это оптимальным решением или нет незнаю, но я поступил следующим образом:

так как моя система давно просилась под замену, я её поставил заново
накатил апач из исходников(1.3.33)
рхр из исходников(4.3.11)
и Mysql из рпм

в итоге всё нормально и кракозяб нет
и нигде ненадо применять "set names....."
 

confguru

ExAdmin
Команда форума
awf

Возможно проблема была в mysql client
на клубном сервер тоже пришлось пересобирать
имеено клиента, так как все работало но с ???
 

DIS

Guest
Автор оригинала: awf

так как моя система давно просилась под замену, я её поставил заново
накатил апач из исходников(1.3.33)
рхр из исходников(4.3.11)
и Mysql из рпм

в итоге всё нормально и кракозяб нет
и нигде ненадо применять "set names....."
а в error_log апачевском никаких странных ошибок связанных с
charset не наблюдается?:)

у меня вроде бы тоже всё хорошо..
но в лог пихается какая-то ерунда при каждом соединении с базой:

File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2)
Character set '#26' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file

ваще не понимаю как это победить не пересобирая всё опять...:(
 

SibProgrammer

Новичок
Автор оригинала: DIS
но в лог пихается какая-то ерунда при каждом соединении с базой:

File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2)
Character set '#26' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file

ваще не понимаю как это победить не пересобирая всё опять...:(
На самом деле эта ошибка не имеет прямого отношения к проблемам с русскими буквами в версии 4.1 (т.е. к топику ;))

Вроде как такая ошибка возникает из-за того, что клиент не может найти требуемый чарсет (это прямым текстом и пишется в лог :)). Соответственно клиента нужно собирать с указанием пути до MySQL, чтобы он знал о требуемом чарсете.
 

FireMaster

Guest
Поставил мускул 4.1.12 на win2k, перечитал топик раз 20, перепробовал все опции командной строки - не помогает, все равно вместо русских букв одни знаки вопроса, не знаю уже что делать, хоть забивать юзать мускул ((( PHP версии 5.1.0b2, надеюсь кто-нибудь поможет советом...
 

SibProgrammer

Новичок
Автор оригинала: FireMaster
Поставил мускул 4.1.12 на win2k, перечитал топик раз 20, перепробовал все опции командной строки - не помогает, все равно вместо русских букв одни знаки вопроса
А если выставить чарсет latin1, то видите нормальный русский текст? Тогда придется читать топик в 21 раз :)

P.S. Вообще, вопрос смахивает на "у меня ничего не работает, но есть PHP и MySQL". Надо больше инфы давать.
 

kvasvik

Guest
Автор оригинала: SibProgrammer
А если выставить чарсет latin1, то видите нормальный русский текст?
latin1 - как то непонятно работает, как будто только на старых базах незатронутых после переустановки мускула.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху