utf8_encode utf8 mb_convert_encoding html_entity_decode ejemplo convert php utf-8 ascii

php - utf8 - Convierta la codificación ASCII TO UTF-8



ã php (6)

Cómo convertir la codificación ASCII a UTF8 en PHP


"ASCII es un subconjunto de UTF-8, entonces ...", ¿entonces UTF-8 es un conjunto ? :)

En otras palabras: cualquier construcción de cuerda con code points de x00 a x7F tiene representaciones indistinguibles (secuencias de bytes) en ASCII y UTF-8. Convertir tal cadena no tiene sentido.


ASCII es un subconjunto de UTF-8, por lo que si un documento es ASCII, entonces ya es UTF-8.


Si está seguro de que su codificación actual es pura ASCII, entonces no tiene que hacer nada porque ASCII ya es un UTF-8 válido.

Pero si aún quiere convertir, solo para asegurarse de que es su UTF-8, entonces puede usar iconv

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

El IGNORE descartará cualquier carácter inválido en caso de que algunos no sean válidos ASCII.


Usar iconv parece ser la mejor solución, pero en mi caso tengo Aviso desde esta función: "Detecté un carácter ilegal en la cadena de entrada" (sin igonore). Utilizo 2 funciones para manipular cadenas ASCII, convertirlo a una matriz de código ASCII y luego serializar:

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; }


Use mb_convert_encoding para convertir un ASCII a UTF-8. Más información here

$string = "chárêctërs"; print(mb_detect_encoding ($string)); $string = mb_convert_encoding($string, "UTF-8"); print(mb_detect_encoding ($string));