Подтвердить что ты не робот

Преобразование кодировки ASCII TO UTF-8

Как преобразовать кодировку ASCII в UTF8 в PHP

4b9b3361

Ответ 1

ASCII - это подмножество UTF-8, поэтому, если документ является ASCII, то он уже является UTF-8.

Ответ 2

Если вы точно знаете, что ваша текущая кодировка является чистой ASCII, вам не нужно ничего делать, потому что ASCII уже является допустимым UTF-8.

Но если вы все еще хотите конвертировать, просто чтобы убедиться, что его UTF-8, вы можете использовать iconv

$string = iconv('ASCII', 'UTF-8//IGNORE', $string);

IGNORE будет отбрасывать любые недопустимые символы только в том случае, если некоторые из них недействительны ASCII.

Ответ 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;
}