Проблема с кодировкой utf8

Thamior

Новичок
Проблема с кодировкой utf8

Здравствуйте. У меня такая проблема. Есть база MySQL (версии 5.0.20) с записями на русском в utf8. Через MySQL клиент всё работает нормально: записывается и выводится по-русски. Есть PHP скрипт, который должен работать с этой базой (PHP стоит версии 5.1.2). Сам скрипт я сохранил как файл в кодировке utf8. При подключении к базе я первым делом посылаю запрос set names utf8. Но почему то данные после извлечения отображаются как знаки вопроса. В FAQ лазил, но там внимание на utf8 не заостряется. Помогите пожалуйста советом, или ткните носом куда надо :). Заранее благодарен.

P.S. Прошу прощения, не знаки вопроса - а просто тарабарщина.
 

Фанат

oncle terrible
Команда форума
В FAQ лазил, но там внимание на utf8 не заостряется
лезь снова.
там всё есть. тебе просто лень было прочитать и понять, что там написано.
иначе ты бы понял ,что внимание "заострять" ни на чём не надо - от конкретной кодировки ничего не зависит.

-~{}~ 23.04.06 13:28:

P.S. Прошу прощения, не знаки вопроса - а просто тарабарщина.
о как интересно.
а если не из базы доставать, а просто эхом выдать?
а браузер знает о том, что данные в utf8?
 

svetasmirnova

маленький монстрик
>В FAQ лазил, но там внимание на utf8 не заостряется
А причём здесь именно utf? Скорее всего ты в браузер неправильный заголовок шлёшь, а как их посмотреть и выставить правильно в ФАКе рассказано.
 

Thamior

Новичок
Автор оригинала: Фанат
лезь снова.
там всё есть. тебе просто лень было прочитать и понять, что там написано.
иначе ты бы понял ,что внимание "заострять" ни на чём не надо - от конкретной кодировки ничего не зависит.

-~{}~ 23.04.06 13:28:


о как интересно.
а если не из базы доставать, а просто эхом выдать?
а браузер знает о том, что данные в utf8?
Эхо работает, а про знаки вопроса я написал в начале потому что случайно вместо SET NAMES написал USE NAMES. Соглашусь, про utf8 конкретно я зря ляпнул - флейм ваш оправдан. ФАК я почитал и понял так, что нужно хекс эдитором лезть в дллку, которая отвечает за связь пхп с мусклем, и править - я это не умею. Если вся проблема упирается в это - может кто-нибудь выложит правленный dll под utf8?

Браузер знает о том, что кодировка utf8 и ставит её по дефолту даже без мета заголовка.

Вот ещё один пункт, для работы с бд в PHP я пользуюсь mysqli, и функция mysqli_character_set_name, которая должна возвращать то ли дефолтную кодировку сервера, то ли кодировку данного соединения с ним - в мануале это как то расплывчато, возвращает latin1.
 

Thamior

Новичок
Автор оригинала: Фанат
окей
а от нас ты чего хочешь?
Ну, я хотел подтверждения, что всё дело исключительно в libmysql.dll - ни в каких других настройках, процедурах при подключении и проч. Я могу его получить?
 

Thamior

Новичок
Автор оригинала: Фанат
нет.
всё дело исключительно в настройках
Спасибо хоть на этом...

-~{}~ 23.04.06 16:40:

Прочитал этот фак уже 10 раз. Ну не пойму никак, в чём дело. У всех set names решает проблему - у меня он меняет знаки вопроса на абра-кадабру. :(
 

Thamior

Новичок
Автор оригинала: Фанат
осталось узнать - что именно за абракадабра
Абракадабра имеется ввиду не перепутанные русские буквы (ситуация описанная в факе), а именно разные символы вроде кавычек и апострофов, периодически попадаются вычурные латинские со всякими нагромождениями сверху, знак евро - в таком духе (это при использовании запроса set names utf8 - без него как у всех знаки вопроса). Это при том что character encoding в браузере на этой странице стоит utf8, всё что пишется из скрипта по-русски, выводится по-русски. В факе намекают, что тогда это в базе всё не в той кодировке хранится. Но по дефолту у меня стоит utf8, да я даже базу создавал с явным указанием кодировки. Остаётся грешить только на соединение PHP с MySQL, на пути которого она меняется в latin1 скорее всего, но это лишь догадка. Наверняка тут дело в какой-то мелочи, которая возможно лежит на самом видном месте, но мне она к несчастью не видна. Эх... где мой анальгин.

-~{}~ 24.04.06 17:53:

Я новичёк и этого не скрываю. Проблему свою решил. Так и знал, что идиотизм какой-нить окажется. Дело было в том, что вводил я данные через консоль, не используя при этом use names cp866. Объясню почему меня это не насторожило сразу: хитрая консоль выводила занесённы данные нормально, и я просто не догадывался, что хранятся они чёрти как, и сомневался в необходимости use names в этом случае.
Запостил это согласно правилам форума ("нашёл решение сам - не молчи"). Может быть случится, что кто-нибудь наступит на те же грабли, и мой пост ему поможет.
P.S. Фанат, не бей ногами :Р
 

monk

Новичок
Опять эта utf-8

Здравствуйте! Нужно сделать копию некоторых таблиц из БД в БД. Делаю через phmyadmin экспорт, а затем импортирую в другую БД из файла. Возникают проблемы с кодировкой utf-8. как только не пробовал в итоге некоторые буквы при копировании становятся в виде вопросительных знаков. например: "Пишем" становится "Пи�?ем", заглавная буква "И" становится "?" Остальные буквы вроде не изменяются. Что же делать? Я уже весь извелся.

-~{}~ 30.04.07 19:24:

ой не туда написал, хотел новую тему создать...
 
Сверху