Проблема с отображением буквы ш

Obormot

Постоялец
Регистрация
10 Янв 2012
Сообщения
88
Реакции
2
Если по форуму было - сорри.

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

В чем может быть проблема?

Кодировка: сами php-файлы в ANSI, в браузере скрипт выдает кодировку UTF-8, БД в
utf8_general_ci
.
 
/*
Частенько встречается при переносе бд, либо при шаманстве с кодировками
буквы "ш" и "И" оказываются битыми (речь идет о utf-8 конечно)
буква "ш" = chr(209).chr(63) / правильно chr(209).chr(136)
буква "И" = chr(208).chr(63) / правильно chr(208).chr(152)
Чтобы пофиксить делаем 2 запроса
*/

Код:
UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);
UPDATE `tbl` SET `pole` = REPLACE(
`pole`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);
естественно заменить свои поля и таблицы
 
Спасибо, суть понятна.

Подскажите нельзя составить запрос что бы пробежаться по всей базе и заменить что требется.
Скрипт большое, таблиц много, не могу прошарить где могут содержаться данные.
 
только базу убьёшь
а результат лучше не станет. Лечится подбором кодировок в .my.cnf или my.ini и реимпортом базы. Плюс нормальные настройки кодировки для mysql в самой CMS. Вообще характерно такое в основном для вбулки, друпала и вордпресса.
 
BACZ модно поподрбнее про ".my.cnf или my.ini и реимпортом базы"
Нормальные настройки ? Вроде везде все прописано, в БД UTF, сам скрипт выводит кодировку в страницах..
 
В файле конфига для mysql(my.cnf под *nix или my.ini в виндах) можно задать несколько разных параметров для кодировки - для сервера и клиента типа "default-character-set".
Плюс кодировка в свойствах самой базы. Плюс кодировки у таблиц. Плюс в классе для mysql от cms или каком нибудь там init.php - ещё под десяток (character_set_database, collation_database, character_set_client, character_set_connection,character_set_results,character_set_server, collation_server,character_set_system и names). Из этого можно получить довольно неприятный кодировочный суп.

Можно сделать дамп базы в текущем её виде и посмотреть в какой там всё кодировке. Проблема с Ш и И - это как правило "дважды уникод" - когда дамп в редакторе в кодировке utf-8 всё равно выглядит как utf-8 при кодировке ANSI. Через set names и т д от всего этого можно добиться "почти русского" текста, но Ш, И и вроде ещё какая то одна теряются безвозвратно (превращаются в "квадратик", "знак вопроса" и тд) Перекодировать их посимвольно в базе - это костыль не от того и не туда. Сначала должны быть нужные настройки в конфигурации mysql, потом в конфигурации CMS, потом под это заново льётся дамп и только потом уже смотреть в сторону посимвольной замены. Кстати всякие аттачи и бинарные штуки в таблицах бьются от кодировочной каши на ура - вон на форуме античат ни одного живого вложения в архиве из сообщений за 2010 и раньше на текущий момент нет.
 
В файле конфига для mysql(my.cnf под *nix или my.ini в виндах) можно задать несколько разных параметров для кодировки - для сервера и клиента типа "default-character-set".
Это я так понимаю настройки хостинга, у меня нет доступа к ним.

N++ показывает кодировку файла который заливается при инталяции в БД (install.sql)
ANSI as UTF-8
первые строки этого файла базы данных:
Код:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";;
ALTER DATABASE DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;;

может быть в этом проблема?
 
Нужно смотреть русский текст в таблицах текущего слитого дампа - какая кодировка там сейчас в качестве русского языка

Кстати примеры
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
Если сливать дамп через phpmyadmin то там при экспорте задается кодировка (либо UTF-8 либо 1251 и т.д.), или я чего то не понимаю ?
Как посмотреть какая кодировка у русских символов в БД ?
 
слить через Sypex Dumper или mysqldump(комстрока) например.

Вот например (опять же пример для размышления) страдания по вбулке
Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху