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));
Use utf8_encode ()
La página Man se puede encontrar aquí http://php.net/manual/en/function.utf8-encode.php
Lea también este artículo de Joel en Software. Proporciona una excelente explicación si lo que Unicode es y cómo funciona. http://www.joelonsoftware.com/articles/Unicode.html