Конвертировать ASCII в кодировку UTF-8 - PullRequest
32 голосов
/ 13 февраля 2011

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

Ответы [ 6 ]

48 голосов
/ 13 февраля 2011

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

25 голосов
/ 13 февраля 2011

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

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

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

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

4 голосов
/ 13 февраля 2011

Использование utf8_encode()

Справочную страницу можно найти здесь http://php.net/manual/en/function.utf8-encode.php

Также прочитайте эту статью от Джоэла о программном обеспечении.Это дает отличное объяснение, что такое Unicode и как он работает.http://www.joelonsoftware.com/articles/Unicode.html

3 голосов
/ 16 ноября 2015

Используйте 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));
3 голосов
/ 20 декабря 2012

"ASCII - это подмножество UTF-8, так что ..." - значит, UTF-8 - это set ?:)

Другими словами: любая строковая сборка с code points от x00 до x7F имеет неразличимые представления (байтовые последовательности) в ASCII и UTF-8.Конвертировать такую ​​строку бессмысленно.

0 голосов
/ 04 августа 2016

Использование 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;
}
...