Возможно, вы пришли, чтобы смешать типы кодирования.
Например. Страница, которая отправляется как iso-8859-1, но получает кодировку текста UTF-8 из MySQL или XML, обычно завершается ошибкой.
Чтобы решить эту проблему, вы должны контролировать тип входных кодировок в зависимости от типа кодировки, который вы выбрали для внутреннего использования.
Если вы отправите его как iso-8859-1, ваш ввод от пользователя также будет iso-8859-1.
header("Content-type:text/html; charset: iso-8859-1");
И если mysql отправляет latin1, вам не нужно ничего делать.
Но если ваш ввод не iso-8859-1, вы должны преобразовать его перед отправкой пользователю или адаптировать его к Mysql перед сохранением.
mb_convert_encoding($text, mb_internal_encoding(), 'UTF-8'); // If it's UTF-8 to internal encoding
Short означает, что вы должны всегда преобразовывать входные данные для соответствия внутренней кодировке и выходные данные преобразователя для соответствия внешней кодировке.
Это внутренняя кодировка, которую я выбрал для использования.
mb_internal_encoding('iso-8859-1'); // Internal encoding
Это код, который я использую.
mb_language('uni'); // Mail encoding
mb_internal_encoding('iso-8859-1'); // Internal encoding
mb_http_output('pass'); // Skip
function convert_encoding($text, $from_code='', $to_code='')
{
if (empty($from_code))
{
$from_code = mb_detect_encoding($text, 'auto');
if ($from_code == 'ASCII')
{
$from_code = 'iso-8859-1';
}
}
if (empty($to_code))
{
return mb_convert_encoding($text, mb_internal_encoding(), $from_code);
}
return mb_convert_encoding($text, $to_code, $from_code);
}
function encoding_html($text, $code='')
{
if (empty($code))
{
return htmlentities($text, ENT_NOQUOTES, mb_internal_encoding());
}
return mb_convert_encoding(htmlentities($text, ENT_NOQUOTES, $code), mb_internal_encoding(), $code);
}
function decoding_html($text, $code='')
{
if (empty($code))
{
return html_entity_decode($text, ENT_NOQUOTES, mb_internal_encoding());
}
return mb_convert_encoding(html_entity_decode($text, ENT_NOQUOTES, $code), mb_internal_encoding(), $code);
}