Escuché que PHP tiene muy poca compatibilidad con Unicode. Entonces, ¿qué se necesita para hacer una aplicación construida en PHP 5 Unicode compatible con PHP 5.3+? ¿Sería mbstring la única opción aquí? ¿Cómo ha superado Facebook o Yahoo esta limitación de PHP?Unicode en PHP?
Respuesta
PHP tiene ningún apoyo de bajo nivel para cualquier codificación. Pero todo lo que realmente significa es que no le importa un nivel de lenguaje . Las cadenas en PHP son secuencias de bytes sin procesar, que pueden estar en cualquier codificación que desee. Cuando maneje cadenas de múltiples bytes, debe tener cuidado de utilizar la función de manipulación de cadena correcta en lugar de atornillar directamente la secuencia de bytes. Por lo tanto, el único "no soporte" de Unicode es que no incluye el concepto de codificación en el lenguaje central en sí mismo, pero aún se puede trabajar con cualquier codificación perfectamente bien manipulando cadenas usando la función de cadena apropiada.
En realidad, si solo tiene un poco de cuidado para mantener todo en UTF-8 todo el tiempo, rara vez tendrá que preocuparse por nada con respecto a las codificaciones. PHP funciona bien con Unicode.
Para obtener una amplia cobertura de este tema, consulte What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text.
+1 para este enlace –
PHP tiene poca compatibilidad con Unicode, pero no es imposible hacerlo, solo tiene que tener cuidado con las funciones que está utilizando y su compatibilidad con Unicode. Esta página tiene un buen resumen del soporte Unicode para las diferentes funciones y extensiones http://www.phpwact.org/php/i18n/utf-8
El artículo vinculado es un poco histérico. El artículo fue escrito en 2009-10-21 y obviamente se refiere a una versión desactualizada de PHP, que además fue compilada sin la extensión mbstring (los paquetes de Linux precompilados más recientes [por ejemplo, los de Debian o Ubuntu] incluyen la mbstring- extensión). Solo usa esa extensión. – feeela
Si los datos provienen de tablas que usan UTF-8, debe establecer los encabezados y metadatos correctos y debe estar bien (no es necesario codificar nada):
<?php
header ('Content-type: text/html; charset=utf-8');
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
</body>
</html>
Esto no cambiaría nada en el manejo de cadenas mediante PHP, p. Ej. en métodos como 'substr()'. Vea también el enlace en la respuesta de chaft ... – feeela
Los siguientes mbstring-variables se debe establecer a través de php.ini o vhost-configuración (httpd.conf; no funciona por directorio [vía .htaccess]):
mbstring.language = Neutral
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 7
Simplemente deje el código como estaba, haga Asegúrese de que su Editor/IDE solo guarde archivos como UTF-8 y entregue todo como UTF-8 (a través del encabezado HTTP o META-tag).
Ver también: PHP Manual – Multibyte String – Function Overloading Feature
- 1. Comprobar unicode en PHP
- 2. Función PHP imagettftext() y unicode
- 3. PHP construir una cadena Unicode?
- 4. Detección de caracteres " " desconocida Unicode en PHP
- 5. PHP-GD: tratar con caracteres Unicode
- 6. Recortar espacios en blanco unicode en PHP 5.2
- 7. Algoritmo de clasificación natural en PHP con soporte para Unicode?
- 8. Insertar caracteres Unicode con PHP -> ODBC -> MS SQL?
- 9. Cómo codificar URL contiene caracteres Unicode con PHP
- 10. Función de PHP para convertir unicode a caracteres especiales?
- 11. cadena Unicode en XML
- 12. Impresión Unicode en vim
- 13. Convierte hash.digest() en unicode
- 14. Problemas Unicode en FreeType
- 15. unicode en postscript
- 16. Unicode en PDF
- 17. Multilingüe Unicode en OpenGL
- 18. Fuentes Unicode en PyGame
- 19. texto con secuencias de escape Unicode a Unicode en Python
- 20. mysql_fetch_array devuelve texto no Unicode
- 21. Literales de caracteres Unicode (hexadecimales) en MySQL
- 22. Unicode Portabilidad
- 23. ¿Guías para tratar con Unicode en PHP5?
- 24. ¿Cómo abrir un archivo en PHP que tenga caracteres Unicode en su nombre?
- 25. Texto RTF Unicode en RichEdit
- 26. Soporte Unicode en C++ 0x
- 27. soporte unicode en android ndk
- 28. ¿Debo soportar Unicode en contraseñas?
- 29. Transformar cadena unicode en python
- 30. Impresión escapada Unicode en Python
Siga todas las instrucciones publicadas aquí. Sugiero que descargue Notepad ++ y asegúrese de guardar el archivo como utf8. Muchos editores tienen la mala costumbre de guardar como ansi, que es basura – OptimusCrime
@OptimusCrime Creo que es el mal hábito del programador, no cambiar eso en la configuración, que es posible para casi cualquier editor (al menos aquellos con resaltado de sintaxis) . – feeela