MySQL Русская кодировка.

Viktor аватар

Установил NetBSD 4.0.1
Поставил Apache-PHP-MySQL.
Страница в броузере с другого компа выводится вся в знаках вопросах.
Что надо сделать чтобы выводило по русски?
Спасибо!

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
dr_jumba аватар

Нифига непонятно чего-ты там

Нифига непонятно чего-ты там понаделал. Связка приблизительна такая: данные-mysql-соедининение php с mysql-передача данных клиенту от сервера-отображение в браузере клиента. Проверь на каждом этапе правильность работы с выбранной кодировкой. Или напиши сюда, люди подскажут.

Viktor аватар

Что тут

Что тут непонятно.
...............................
---php
header("Content-type: text/html; charset=windows-1251");
header("Content-Language: ru");
---php

[html][head]
[meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /]
[meta http-equiv="Content-Language" content="ru" /]
...............................
Текст который в файле выводится по русски
а все что из базы знаки вопроса.
???? ???? ????????? ??????????????

dr_jumba аватар

Ну а остальное? Collation в

Ну а остальное? Collation в mysql, установлены или нет encoding/charset или чего там еще при соединении конфигурится. Можеть у тебя в базе latin_swedish, откуда нам тут знать.

Viktor аватар

Вот мой

Вот мой my.cnf

[client]
#password = your_password
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@

[mysqld]
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout

dr_jumba аватар

Это не то. Вот статья

Это не то. Вот статья http://www.linux.by/wiki/index.php/FAQ_PHP_MySQL_charset
Обратить внимание на character set, collation - проверить их для своей базы и таблиц, и настройки соединения - как устанавливать нужно поискать.

v102o аватар

Здравствуйте Viktor! Ссылки

Здравствуйте Viktor!

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

1. Исключительно для PHP.
После соединения с Базой данных нужно выполнить следущие:

Соединение
mysql_connect(HST,USR,PSW);
и сразу вот вот это:
mysql_query("SET NAMES cp1251");

Это поможет, если Ваши данные попали в базу через Phpmyadmin (и др. может быть, не пробывал) с правильным, как товарищ говорил collation (cp1251_general_ci - для примера)
Mysql данные хранит в UTF и ему безразлично как настроен сервер.
Переменная collation_server может быть хоть китайская.
====================================
====================================
====================================
2. Можно настроить сам сервер, и не вставлять всегда в Ваши скрипты выше указанную строку.

Вот мой my.cnf для NetBSD v4.0.1
(только проверте ваши пути к файлам и возможно свои персональные настройки)

[client]
port = 3306
socket = /tmp/mysql.sock
character-sets-dir = /usr/pkg/share/mysql/charsets
init-connect = SET NAMES cp1251
default-character-set = cp1251

[mysqld]
port = 3306
socket = /tmp/mysql.sock
character-sets-dir = /usr/pkg/share/mysql/charsets
init-connect = SET NAMES cp1251
default-character-set = cp1251
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
skip-federated
log-bin = mysql-bin
server-id = 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
character-sets-dir = /usr/pkg/share/mysql/charsets
init-connect = SET NAMES cp1251
default-character-set = cp1251

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
=======================================================

перезапускаете /etc/rc.d/mysqld restart

И всё :)

Удачи Viktor!

P.S. Не хочу никого обидеть, но скажу.
Сайт www.runetbsd.ru задуман и поддерживается действительно любящей NetBSD командой.
Чем более подробные ответы мы даем людям, тем больше людей мы привлекаем к этой системе.

Не зачем гонять людей по ссылкам, как судья по статьям.
Можно на крайний случай скопировать и вставить.

dr_jumba аватар

В ссылке была точка в конце,

В ссылке была точка в конце, поэтому ссылка не работала.
А будет ли приведенное решение работать с юникодом?
Я раньше расстраивался, когда меня посылали курить конкретный man вместо конкретного решения моей проблемы, сейчас думаю, что это более правильно, потому как позволяет самому разобраться и учиться разбираться.
Я уже написал вверху, что проблема может быть в любом месте связки данные-mysql-соедининение php с mysql-передача данных клиенту от сервера-отображение в браузере клиента.

v102o аватар

Думаю с Юникодм так работать

Думаю с Юникодм так работать не будет.
Я не пробывал, все русские сайты делаю win-1251
Пока не вижу необходимости переходить на UTF-8

Но я специалист по настройкам еще тот, с миру по нитке... :)
С чем сталкивался, как решал свои проблемы, о том тока и могу писать.

v102o аватар

Необходимость работы с utf-8

Необходимость работы с utf-8 настала...

Если сервер настроен для cp1251

то для работы с utf-8 надо писать следущий запрос:

mysql_query("SET NAMES utf8");

Viktor аватар

Парни, все заработало!!! Всем

Парни, все заработало!!!
Всем большое спасибо!!!