Как преобразовать кодировку ASCII в UTF8 в PHP
Преобразование кодировки ASCII TO UTF-8
Ответ 1
ASCII - это подмножество UTF-8, поэтому, если документ является ASCII, то он уже является UTF-8.
Ответ 2
Если вы точно знаете, что ваша текущая кодировка является чистой ASCII, вам не нужно ничего делать, потому что ASCII уже является допустимым UTF-8.
Но если вы все еще хотите конвертировать, просто чтобы убедиться, что его UTF-8, вы можете использовать iconv
$string = iconv('ASCII', 'UTF-8//IGNORE', $string);
IGNORE будет отбрасывать любые недопустимые символы только в том случае, если некоторые из них недействительны ASCII.
Ответ 3
Использование utf8_encode()
Страница человека можно найти здесь http://php.net/manual/en/function.utf8-encode.php
Также прочитайте эту статью от Joel on Software. Это дает отличное объяснение, что такое Unicode и как он работает. http://www.joelonsoftware.com/articles/Unicode.html
Ответ 4
"ASCII - это подмножество UTF-8, поэтому..." - поэтому UTF-8 является набором?:)
Другими словами: любая строковая сборка с code points
от x00 до x7F имеет неразличимые представления (байтовые последовательности) в ASCII и UTF-8. Преобразование такой строки бессмысленно.
Ответ 5
Используйте mb_convert_encoding для преобразования ASCII в UTF-8. Подробнее здесь
$string = "chárêctërs";
print(mb_detect_encoding ($string));
$string = mb_convert_encoding($string, "UTF-8");
print(mb_detect_encoding ($string));
Ответ 6
Использование iconv выглядит как лучшее решение, но в моем случае у меня есть уведомление, которое формирует эту функцию: "Обнаружен незаконный символ в строке ввода в" (без igonore). Я использую 2 функции для управления строками ASCII, преобразовывая их в массив кода ASCII, а затем сериализуем:
public static function ToAscii($string) {
$strlen = strlen($string);
$charCode = array();
for ($i = 0; $i < $strlen; $i++) {
$charCode[] = ord(substr($string, $i, 1));
}
$result = json_encode($charCode);
return $result;
}
public static function fromAscii($string) {
$charCode = json_decode($string);
$result = '';
foreach ($charCode as $code) {
$result .= chr($code);
};
return $result;
}