[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблемы с кодировкой в MySQL
Leg
возникла следующая проблема: при заполнении базы через MySQL QueryBrowser и после извлекаю их средствами РНР, все русские символы отображаются знаками вопроса ( ??? ). я знаю, что при заполнении через РНР, этого можно избежать, но все-же... может есть какой-то другой выход?



Спустя 6 минут, 21 секунда (26.06.2006 - 10:33) vasa_c написал(а):
Если mysql 4.1 и выше, то внутри она хранит все в utf.<br>Нужно либо:<br>1. Делать сайты на utf-8 (рекомендуется).<br>либо<br>2. Указывать mysql свою кодировку. В конфиге мускула или в сценарии запросом<br>
set names cp1251

(win-1251 заменить на нужную по вкусу)

Спустя 11 часов, 39 минут, 6 секунд (26.06.2006 - 22:12) дмитрий написал(а):
QUOTE
1. Делать сайты на utf-8 (рекомендуется).

с какого перепуга, поясни плиз?

Спустя 11 часов, 9 минут, 8 секунд (27.06.2006 - 09:21) vasa_c написал(а):
Не с перепуга, а с того что это прально.
Во-первых проблем с кучей русских кодировок нет.
Во-вторых многоязычность поддерживаться будет на порядок лучше.
В-третих всё переходит на utf. Вот опять же mysql. xml, javascript и т.д и т.п. и для того чтобы с ними работать приходится по д-цать раз переодировать из win-1251 или другой в utf и обратно.

Спустя 1 час, 1 минута, 10 секунд (27.06.2006 - 10:22) RealMan написал(а):
не знаю может сильно не прав, но имхо внегласным стандартом рунета является cp1251.
за примером далеко идти не надо хоятбы этот форум.

Спустя 16 минут, 10 секунд (27.06.2006 - 10:38) vasa_c написал(а):
Являлся и является по инерции, но пора уже переходить на новое.

Спустя 25 минут, 7 секунд (27.06.2006 - 11:03) Leg написал(а):
единственное, что неудобно - то, что если вбиваешь русский текст руками в страницу, то каждый символ заменяется его кодом. текст после этого становится трудноредактируемым... я понимаю, что можно это делать в визуальных редакторах... все-же небольшое неудобство.

Спустя 16 минут, 50 секунд (27.06.2006 - 11:20) vasa_c написал(а):
Leg, не совсем понял, как так руками в страницу. Поясни.

Спустя 2 часа, 16 минут, 6 секунд (27.06.2006 - 13:36) Leg написал(а):
я имел в виду ручную верстку... не WYSIWYG.

Спустя 18 минут, 24 секунды (27.06.2006 - 13:55) vasa_c написал(а):
Проблемы при ручной верстке с utf? Какие?

Спустя 11 минут, 29 секунд (27.06.2006 - 14:06) Leg написал(а):
хм... сейчас этой ошибки уже нет. пользуюсь Dreamweaver 8. давным-давно писал в AceHTML Pro, там если кодировка UTF-8, то при вводе, допустим, строки 'здравствуй, Мир!' мы получим что-то наподобии: 'Здравствуй, РњРёСЂ!'

это радует! следующий проэкт буду писать на Юникод.

Спустя 6 дней, 7 часов, 50 минут, 41 секунда (3.07.2006 - 21:57) LiZ@RD написал(а):
QUOTE
1. Делать сайты на utf-8 (рекомендуется).
либо

А чем utf лучше win? поясни, плз.
А как насчет проблем с передачей данных от пользователя? Придется ведь каждый раз перекодировать из виндовской в utf...
Кстати, у меня mozilla под linux, так та вообще переменные через get передает в koi8r, а не cp1251 (уверен, это легко можно подправить в настройках linux'a, но все же...)

Спустя 17 минут, 29 секунд (3.07.2006 - 22:14) vasa_c написал(а):
QUOTE
Придется ведь каждый раз перекодировать из виндовской в utf...

Так вот использовать везде utf и не придеться перекодировать.

QUOTE
А чем utf лучше win?

Выше пояснял

Спустя 2 дня, 16 часов, 7 минут, 59 секунд (6.07.2006 - 14:22) Nigga написал(а):
set names cp1251

Что это значит, где это делать? Я на главной странице phpmyadmin'а выбрал свою кодировку в базе, ничего не изменилось - как были ???, так и остались. И вообще у меня с новой базой (mysql 4) глюки какие-то... С кодировкой.

Спустя 22 минуты, 16 секунд (6.07.2006 - 14:44) vasa_c написал(а):
<b>Nigga</b>, в сценарии запросом:<br>
mysql_query( 'set names cp1251' );

Спустя 6 часов, 32 минуты, 47 секунд (6.07.2006 - 21:17) дмитрий написал(а):
QUOTE
Во-первых проблем с кучей русских кодировок нет.

какая куча? есть 2-е стандартно-распространненых: кои и виндусовкая

QUOTE
Во-вторых многоязычность поддерживаться будет на порядок лучше.

хочешь чтоб китайцы читали :lol:

QUOTE
для того чтобы с ними работать приходится по д-цать раз переодировать из win-1251 или другой в utf и обратно.

не нужно сочинять, mysql, php, js отлично разбираются в данных кодировках

Спустя 45 минут, 27 секунд (6.07.2006 - 22:03) vasa_c написал(а):
QUOTE
какая куча? есть 2-е стандартно-распространненых: кои и виндусовкая

С ними тоже проблем хватает. +iso, +utf

QUOTE
хочешь чтоб китайцы читали :lol:

Какие мы сегодня веселые

QUOTE
не нужно сочинять, mysql, php, js отлично разбираются в данных кодировках

Как ты мог заметить у человека открывшего эту тему mysql не слишком разбирался в кодировках. И с того момента когда админы начали переходить с mysql 4.0 на 4.1 подобными вопросами завален весь инет. "Ах, почему у меня в базе какие-то вопросики стали и другая околесица?".

Видимо с js ты не ушел дальше проверки формы. И не дошел, например, до аякса. Иначе бы замучился пересылать данные от js к php-сценариям написанными под win-1251 и там все перекодировать, а ответы кодировать обратно в utf.

Спустя 21 час, 49 минут, 58 секунд (7.07.2006 - 19:53) Nigga написал(а):
Братва, так как перейти на mysql 4.1?<br>И куда там вставлять это? Ну сделал я этот запрос. Вроде помогло. Но не знаю - от этого ли...<br>
mysql_query( 'set names cp1251' );

И еще. Я себе дэнвер с пхп 5 поставил и мускулем 4.1, так он у меня во всех скриптах ошибки видит какие-то. Например про сессии и mysql_fetch_array. В чем дело?

Спустя 42 секунды (7.07.2006 - 19:53) vasa_c написал(а):
Nigga, какие ошибки то?

Спустя 14 часов, 48 минут, 40 секунд (8.07.2006 - 10:42) Nigga написал(а):
Во, зацени:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at y:homemegashop.ruwwwindex.php:3) in y:homemegashop.ruwwwindex.php on line 5
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in y:homemegashop.ruwwwindex.php on line 97
Это две основные - с сессиями и с массивом. На другом дэнвере же пахает, а как на новый перетащил, так и все...

Спустя (7.07.2006 - 20:11) vasa_c написал(а):
Nigga, на предыдущем какой mysql был?
После выборки данных (тех которых потом через mysql_fetch_array()... ) что пишет mysql_error()?

Спустя 18 часов, 22 минуты, 51 секунда (8.07.2006 - 14:34) Nigga написал(а):
Тот был MySQL 3.23.53. А про mysql_error() не могу сказать. Я его не ставил... Можно пример строчки, как с скрипте это сделать, как правильно mysql_error() поставить, чтоб показывал ошибки. Что-то в книжках влом искать...

Спустя 14 часов, 33 минуты, 1 секунда (9.07.2006 - 05:07) NoName написал(а):
QUOTE(Nigga)
Тот был MySQL 3.23.53. А про mysql_error() не могу сказать. Я его не ставил... Можно пример строчки, как с скрипте это сделать, как правильно mysql_error() поставить, чтоб показывал ошибки. Что-то в книжках влом искать...

Пример:
$res=mysql_query($query) or die('Ошибка выполнения sql запроса
'.mysql_error());

Ошибка в MySQL началась после перехода на PHP5 ?

Спустя 8 дней, 7 часов, 27 минут, 16 секунд (17.07.2006 - 12:34) LiZ@RD написал(а):
QUOTE
Как ты мог заметить у человека открывшего эту тему mysql не слишком разбирался в кодировках. И с того момента когда админы начали переходить с mysql 4.0 на 4.1 подобными вопросами завален весь инет. "Ах, почему у меня в базе какие-то вопросики стали и другая околесица?".

У меня в пх май админе лажа какая-то пстоянно. А в ри росмотре странички - всё нормально %) Но это не очень удобно, половина функций в хмайадмин не работает из-за этого =(
(это я про cp1251)

Насчет utf:
1 - а как насчет того, что в юникоде символы редставляются двумя байтами? это ведь удвоит траффик (графика не в счет, лично у меня она отключена), что не есть гут %)
2 - ламерский ворос)) а какая функция перекодирует в юникод? %)

Спустя 1 день, 1 час, 59 минут, 52 секунды (18.07.2006 - 14:34) skrab написал(а):
QUOTE
mysql_query( 'set names cp1251' );

А можно как-то так настроить базу так, чтоб каждый раз этот запрос не писать? у меня вроде везде кодировки про умолчанию нужные выставлены, а вре равно не работает! А с этим запросом - работает.

Спустя 2 дня, 11 часов, 3 минуты, 13 секунд (21.07.2006 - 01:37) LiZ@RD написал(а):
skrab, пиши либо в отдельном фаиле коннект к базе, либо функцию отдельную.... так проще будет %)

Спустя 6 часов, 50 минут, 39 секунд (21.07.2006 - 08:28) vasa_c написал(а):
QUOTE(LiZ@RD)
Насчет utf:
1 - а как насчет того, что в юникоде символы редставляются двумя байтами? это ведь удвоит траффик (графика не в счет, лично у меня она отключена), что не есть гут %)
2 - ламерский ворос)) а какая функция перекодирует в юникод? %)

1. Первая половина ASCII (латиница, цифры, основные символы) представляется по прежнему 1. Ну а символы национальных алфавитов двумя. Тут уж ничего не сделаешь, за все платить надо. Вот и выбирайте, что важнее удобство, совместимость и т.п. или иллюзорная экономия траффика, которая на современных машинах уже не столь важна.

2. http://ru.php.net/manual/ru/function.iconv.php, http://ru.php.net/manual/ru/function.mb-co...rt-encoding.php

Спустя 4 часа, 13 минут, 43 секунды (21.07.2006 - 12:42) LiZ@RD написал(а):
QUOTE
http://ru.php.net/manual/ru/function.iconv.php

404 Not Found

А экономия траффика не такая уж и несущественная проблема... многие сидят на диалапе (я в том числе)) или через gprs...

Спустя 1 год, 6 месяцев, 15 дней, 1 час, 57 минут, 50 секунд (7.02.2008 - 15:39) SN@IPER написал(а):
Добрый день.
Незнаю насчет того что стандартная кодировка стоит utf, так как у меня показана latin1
ОС : Linux Fedora Core 8 x86 | MySQL v.5 | PHP 5
Запускаю phpMyAdmin все ок открываю свой скрипт и там все "?????????"
Делал в my.conf
Цитата
[client]
port=3306
init-connect="SET NAMES cp1251"
init-connect="SET CHARACTER SET cp1251"
init-connect="SET CHARSET cp1251"
default-collation=cp1251_general_ci
default-character-set=cp1251

[mysql]
init-connect="SET NAMES cp1251"
init-connect="SET CHARACTER SET cp1251"
init-connect="SET CHARSET cp1251"
default-collation=cp1251_general_ci
default-character-set=cp1251

[mysqld]
port=3306
init-connect="SET NAMES cp1251"
init-connect="SET CHARACTER SET cp1251"
character_set_client=cp1251
character_set_server=cp1251
collation_server=cp1251_general_ci
default-collation=cp1251_general_ci
default-character-set=cp1251

В этом случае phpMyAdmin показывает что у меня стоит utf-8 и cp1251, но результат тот же.

Не подскажите как быть? sad.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.