Форумы портала PHP.SU » » Вопросы новичков » Добавление в бд - заменяется другим символом

Страниц (1): [1]
 

1. hatsub - 26 Июля, 2011 - 12:15:53 - перейти к сообщению
если добавить текст с textarea в бд в поле типа text, то все "ш" превращаются в "�?"
если прописать mysql_escape_string то все "ш" опять превращаются в "�?"
Причем "Ш" (большая) не заменяется!
В чем дело?
Кодировка везде utf8 (но дело не в ней т.к. заменяется только один символ)
2. DeepVarvar - 26 Июля, 2011 - 12:29:45 - перейти к сообщению
hatsub пишет:
Кодировка везде utf8

И в самом подключении тоже?

А колэйшн случаем не utf8_bin ?
Должно бы utf8_general_ci как не зависимая от регистра, раз уж тип поля TEXT.
3. LIME - 26 Июля, 2011 - 12:31:07 - перейти к сообщению
hatsub вы применяете к тексту какие-либо строковые ф-ции?
типа substr()
4. hatsub - 26 Июля, 2011 - 12:38:10 - перейти к сообщению
никаких функций не применяю, кодировка именно utf8_general_ci, SET NAMES "utf8" нужно в запрос на добавление вставить?

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO ... VALUES (...) SET NAMES 'utf8'

?
5. DeepVarvar - 26 Июля, 2011 - 12:40:02 - перейти к сообщению
hatsub пишет:
SET NAMES "utf8"
Cразу после коннекта к базе обычным запросом - будет действовать до конца активного текущего соединения.
6. hatsub - 26 Июля, 2011 - 12:45:08 - перейти к сообщению
все равно тоже самое получается:

CODE (SQL):
скопировать код в буфер обмена
  1. mysql_select_db('...', mysql_connect('localhost','...','....'));
  2. mysql_query('SET NAMES "utf8"');


результат: "����� ���� "
Причем такая проблема именно с типом поля text
сейчас если зайти через phpmyadmin в бд, то там "ш" предстает в нормальном виде.
7. DeepVarvar - 26 Июля, 2011 - 12:56:33 - перейти к сообщению
hatsub пишет:
����� ����
Уже больше похоже на правду - проверяйте тип сравнения у самой базы,у таблицы и у полей.
Смотрите чтоб было: Type = MYISAM

Проверяйте заголовки которые отправляете браузеру.
Проверяйте кодировку файлов.
8. hatsub - 26 Июля, 2011 - 13:02:54 - перейти к сообщению
таблица в бд:

тип | сравнение
------------------
text | utf8_general_ci

текст в таблице предстает в нормальном виде :"шшшш"

php файл(сам файл хранится в unix utf8):
PHP:
скопировать код в буфер обмена
  1.  
  2. header('Content-type: text/html; charset=utf-8');
  3. mysql_select_db('....', mysql_connect('localhost','.....','.....'));
  4. mysql_query('SET NAMES "utf8"');
  5.  
  6. mysql_query("INSERT INTO ... VALUES ()");


В коде html страницы meta тег с кодировкой не указан.

уже при выводе из бд "ш" искажается на "�"
9. Давит - 26 Июля, 2011 - 13:07:00 - перейти к сообщению
hatsub пишет:
Кодировка везде utf8


не может быть. проверьте еще раз
10. hatsub - 26 Июля, 2011 - 13:08:23 - перейти к сообщению
сообщение выше http://forum.php.su/topic.php?fo...74574#1311674574
(Добавление)
теперь вообще все русскоязычные сиволы стали такими

���� ����������� ���-������������
(Добавление)
iconv('cp1251','utf-8',@mysql_result($up,$i,"post")); вставил это и проблема решилась
11. Champion - 26 Июля, 2011 - 17:53:12 - перейти к сообщению
hatsub пишет:
iconv('cp1251','utf-8',@mysql_result($up,$i,"post")); вставил это и проблема решилась
Значит всё-таки данные из БД в 1251 возвращались.

 

Powered by ExBB FM 1.0 RC1