С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/193: Рейтинг темы: голосов - 193, средняя оценка - 4.72
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
1

снова про кодировку, utf8 джÑ�к

12.06.2011, 18:59. Показов 35773. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть несколько полей вида:
HTML5
1
<input type="text" name="login" maxlength="40" value="<?php echo htmlentities($login);?>"/>
переменная $login - вывод этого же поля, если он не записан в базу.
в него приходят кракозябры типа:
дж�к
тестируется всё на xampp 1.7.5b2
тему romchiksoad`а и ещё несколько подобных - прочитал.
собственно, проблема записи знаков вопроса в базу решилась сразу:
PHP
1
2
$query = "set names utf8";
mysql_query($query, $connection);
затем, по совету romchiksoad`а заменил на
PHP
1
mysql_set_charset( 'utf8' );
однако, после невыполненной записи в поле вместо, например,
джэк
возвращается
дж�к
PHP
1
<?php header( 'Content-Type: text/html; charset=utf-8' );?>
HTML5
1
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
так же дописал в php.ini:
default_charset = "utf8"
и
mssql.charset = "utf8"
так же пытался дописать в mysql/bin/my.ini:
character-sets-dir = "d:/xampp/mysql/share/charsets"
default-character-set = utf8
skip-character-set-client-handshake
однако, с такими настройками mysql-сервер запускаться отказался.

//requesting reinforcements
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2011, 18:59
Ответы с готовыми решениями:

БД пишет в базу Гогра вместо русского
Доброго времени суток подскажите пожалуйста. В коде стоит &lt;meta http-equiv=&quot;Content-Type&quot;...

При отправке формой обратной связи приходят символы (Павел)
Непонятные символы приходят на почту. Отправляю такой формой со страницы index.php &lt;!DOCTYPE...

Ошибка 208 при Createobject
Написал некий агент который манипулирует некоторым образом с файлами, копирует, запускает и т.п....

Кто такой: http://whois.domaintools.com/64.208.172
Может быть кто-то знает. Кто это: My Webpage Я так понял, что хозяин IP: My Webpage, который...

16
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
13.06.2011, 06:28 2
Цитата Сообщение от any_stuff Посмотреть сообщение
так же дописал в php.ini:
default_charset = "utf8"
default_charset = "utf-8"

В папке xampp/apache/conf/ во всех файлах поищите директиву AddDefaultCharset . Если найдете что-то, отличное от Off, закомментируйте.
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
13.06.2011, 11:56  [ТС] 3
AddDefaultCharset - ни где нет.
зато нашёл файл
xampp\apache\conf\extra\httpd-languages.conf
со строками вида:
PHP
1
AddLanguage ru .ru
и
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
AddCharset ISO-8859-5  .iso8859-5  .cyr .iso-ru
.
.
.
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251   .win-1251
AddCharset CP866   .cp866
AddCharset KOI8  .koi8
AddCharset KOI8-E  .koi8-e
AddCharset KOI8-r  .koi8-r .koi8-ru
AddCharset KOI8-U  .koi8-u
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-7   .utf7
AddCharset UTF-8   .utf8
AddCharset UTF-16  .utf16
видимо, там включаются все известные кодировки.
а так же файл
xampp\apache\conf\charset-conv.conf
со строками вида:
PHP
1
ru          ISO-8859-5  Russian
0
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
13.06.2011, 13:04 4
Цитата Сообщение от any_stuff Посмотреть сообщение
AddDefaultCharset - ни где нет.
Это хорошо. А в .htaccess'ах в папке проекта его тоже нет?
Отладчиком (или чем угодно) посмотрите, выдает ли апач браузеру хидер Content-Type с указанием кодировки? Если не выдаёт, то проблемы в браузере или в самих файлах.
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
13.06.2011, 14:20  [ТС] 5
AddDefaultCharset UTF-8
раньше был в
xampp\htdocs\forbidden\.htaccess
(сразу после установки).
однако я каждый раз полностью очищаю папку htdocs перед заливкой нового тестируемого сайта
тем не менее, возврат каталога forbidden на его исходное место не принёс ни каких изменений.
во всех остальных .htaccess (те, что в PhpMyAdmin) так же ничего.

насчёт браузера - вчерновую всё тестируется на opera 10.11.
однако, ie9 выдаёт точно то же самое
можно, конечно, заморочиться, и потестить на других версиях ie,
но что-то мне подсказывает, что результат будет тем же

Добавлено через 10 минут
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Отладчиком (или чем угодно) посмотрите, выдает ли апач браузеру хидер Content-Type с указанием кодировки? Если не выдаёт, то проблемы в браузере или в самих файлах.
имеется в виду исходный код?
HTML5
1
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
0
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
13.06.2011, 15:54 6
Цитата Сообщение от any_stuff Посмотреть сообщение
имеется в виду исходный код?
Нет, имеются ввиду хидеры http ответа, которые апач выдает браузеру.

Браузер делает запрос:
GET /index.php HTTP/1.0
Host: localhost
...
Connection: keep-alive
И получает ответ
HTTP/1.0 200 OK
Server: ...
Date: Mon, 13 Jun 2011 11:50:52 GMT
Content-Type: text/html; charset=...
...
Если апач указывает явно кодировку, то она имеет приоритет над тем, что указано в странице в <meta/>.
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
14.06.2011, 16:22  [ТС] 7
ответ для html-страницы:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
HTTP/1.1 200 OK
Date: Tue, 14 Jun 2011 13:09:00 GMT
Server: Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.2 mod_perl/2.0.4 Perl/v5.10.1
Last-Modified: Sat, 28 May 2011 18:24:25 GMT
ETag: "10000000131d6-2a79-4a45a29feab13"
Accept-Ranges: bytes
Content-Length: 10873
Connection: close
Content-Type: text/html
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
ответ для php-скрипта:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
HTTP/1.1 200 OK
Date: Tue, 14 Jun 2011 13:17:25 GMT
Server: Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.2 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.6
Content-Length: 4635
Connection: close
Content-Type: text/html; charset=utf-8
 
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
0
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
14.06.2011, 16:49 8
В таком случае, может быть, у Вас исходные текст дважды в UTF-8 закодирован, причем второй раз неправильно. Т.е. был текст "Привет", в UTF-8 он закодировался в "Привет", а затем второй раз в UTF-8 закодировался и стал "Р*СџРЎР‚Р*С‘Р*Р†Р*µС‚".
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
14.06.2011, 17:03  [ТС] 9
а как это проверить/избежать этого?
0
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
14.06.2011, 17:32 10
У Вас эти кривые буквы в базе сохранены?
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
14.06.2011, 21:44  [ТС] 11
ага. например,
джэк петрович риппер
=
дж�к пе��ови� �иппе�

повторюсь, в базе всё корректно, засада только при возврате в браузер
0
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
15.06.2011, 15:21 12
Какая кодировка установлена в самой базе, в данной таблице и в данном поле?
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
15.06.2011, 16:54  [ТС] 13
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Какая кодировка установлена в самой базе, в данной таблице и в данном поле?
а как посмотреть?
в базе, я так понимаю, кодировка определяется при создании.
запрос на создание заканчивался таким образом:
SQL
1
ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8;
а про остальное - не знаю
0
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
15.06.2011, 18:06 14
В phpMyAdmin'е когда выбираете из списка баз нужную базу, видите список таблиц. Здесь у каждой таблицы указана ее кодировка. В конце списка в "итого" еще дополнительно указана кодировка всей базы. Далее в просмотре структуры таблицы в текстовых полей отображается их кодировка.
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
15.06.2011, 22:09  [ТС] 15
кодировка таблицы - utf8_general_ci
кодировка всей базы - latin1_swedish_ci
в структуре все строковые поля - utf8_general_ci
0
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
16.06.2011, 15:33 16
Надо кодировку базы сменить на utf8. Там же, где список таблицы данной базы, есть "Операции".
0
43 / 7 / 0
Регистрация: 16.09.2009
Сообщений: 115
16.06.2011, 19:30  [ТС] 17
сменил, проблема не решилась

Добавлено через 1 час 33 минуты
ошибка обнаружилась случайно:
http://ru.php.net/manual/en/fu... tities.php
а именно:
Like htmlspecialchars(), it takes an optional third argument charset which defines character set used in conversion. Presently, the ISO-8859-1 character set is used as the default.
таким образом, код:
PHP
1
<input type="text" name="login" maxlength="40" value="<?php echo htmlentities($login);?>"/>
надо бы заменить на
PHP
1
<input type="text" name="login" maxlength="40" value="<?php echo htmlentities($login, ENT_QUOTES | ENT_IGNORE, "UTF-8");?>"/>
но засада в том, что, в независимости от выбора флага (ENT_COMPAT или ENT_QUOTES), в тестовой фразе перед кавычками поялвяются обратные слэши.
так,
"A 'quote' is <b>bold</b>"
превращается в
\"A \'quote\' is <b>bold</b>\"
затем в
\\\"A \\\'quote\\\' is <b>bold</b>\\\"
и так далее.
причём, то же самое происходит, если оставить просто
PHP
1
echo $login;
пока не понял, как с этм бороться.
0
16.06.2011, 19:30
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2011, 19:30
Помогаю со студенческими работами здесь

Снова про кодировку
Доброго времени суток, уважаемые ruby-разработчики. Помогите пожалуйста со следующей проблемой. #...

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

Разворот слова на 180º
Здраствуйте, подскажите как реализовать разворот слов. Здесь были подобные темы, но для матрицы. У...

Символы � при декодировании utf8 кириллицы
Добрый день ! У меня всплыл косяк . когда принимаю пакет байт и конвертирую в utf8 . Иногда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru