Это мой PHP-код:
<?php $result = ''; $str = 'Тугайный соловей'; for ($y=0; $y < strlen($str); $y++) { $tmp = mb_substr($str, $y, 1); $result = $result . $tmp; } echo 'result = ' . $result;
Выход:
Тугайный Ñоловей
Что я могу сделать? Я должен положить $result
в базу данных MySQL.
Какова кодировка вашего файла? Это тоже должен быть UTF8. Какова стандартная кодировка вашего HTTP-сервера? Это также должен быть UTF-8.
Кодировка работает только в том случае, если:
При работе с базами данных вам также необходимо установить правильную кодировку для полей БД и способ взаимодействия клиента MySQL с сервером (см. mysql_set_charset()
). Поля недостаточно, потому что ваш MySQL-клиент (в данном случае PHP) может быть установлен по умолчанию по умолчанию и переинтерпретирует данные. Таким образом, вы получаете UTF8 DB -> клиент ISO ->, введенный в скрипт PHP UTF8. Неудивительно, почему это испортилось в конце 🙂
Как обслуживать файл с правильной кодировкой?
header('Content-type: text/html; charset=utf-8')
– это одно решение
.htaccess файл, содержащий AddDefaultCharset UTF-8
является еще одним
HTML-мета-контент-тип тоже может работать, но всегда лучше отправлять эту информацию с помощью HTTP-заголовков.
PS: вы также должны использовать mb_strlen()
потому что strlen()
в строках UTF8, вероятно, сообщит больше, чем реальную длину.
Я полагаю, ваш код находится в windiws-1251
так как он является русским 🙂 преобразует вашу строку в utf-8:
$str = iconv('windows-1251', 'utf-8', $str);
Если вы собираетесь отправлять смешанные данные и не хотите указывать utf-8 с помощью заголовка php, вы можете добавить этот html на свою страницу:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Если ваша база данных UTF-8, это нормально для mysql.
Для вашего эха, если вы сделаете это на веб-сайте, поместите это на верхнюю страницу:
header('Content-Type: text/html; charset=UTF-8');