Prefacio:
Para ser honesto,
Sandals también piensa que UTF8 es algo bueno...
Después de todo, mostrar a China, Japón y Corea del Sur en la misma pantalla es muy atractivo para los asiáticos orientales...
(Por supuesto los beneficios no se limitan a esto...)
No sólo programas web...
Los núcleos de muchas aplicaciones están empezando a utilizar codificación Unicode...
El propósito es obvio: admitir visualización en varios idiomas...
Todo el software de Microsoft está basado en Unicode...
Por lo tanto, el software japonés se puede visualizar normalmente en su XP chino...
Y el chino 98 provocará caracteres confusos al instalar software en otro idioma en el kernel GB...
En cuanto a UTF8,
Se puede decir que es una rama de Unicode.
Utiliza tres bytes para guardar un carácter chino...
(Unicode usa cuatro bytes)
El software de aplicación ha desertado colectivamente a Unicode...
¿No se nos permite utilizar UTF8 en aplicaciones web?
En este artículo, Sandals intentará introducir la programación PHP bajo codificación UTF8 en tantos aspectos como sea posible...
En cuanto a por qué "chino" se introduce por separado...
En primer lugar, es porque realmente no hay necesidad de considerar UTF8 cuando se trata de inglés...
A menos que esté planeando construir un sistema multilingüe...
(Quiero presentar algunas quejas: los extranjeros hoy en día no prestan atención a este tema cuando escriben programas...)
En segundo lugar, los métodos de procesamiento de idiomas multibyte como China, Japón y Corea bajo codificación UTF8 son en realidad muy similares...
Simplemente sigue la calabaza y saca la pala...
Bien... comencemos con la parte de procesamiento de la base de datos...
============================================
Conexión a la base de datos
Muchas personas encontrarán que los datos están desordenados cuando simplemente actualizan a Mysql 4.1...
De hecho, es porque Mysql admite conjuntos de caracteres a partir de 4.1...
Y el juego de caracteres predeterminado es UTF8...
(Prueba plena de la importancia de integrarse con los estándares internacionales... Jeje...)
En el pasado, usábamos principalmente codificación utf8 o GBK...
Por supuesto, los datos de salida están confusos...
Para resolver el código confuso...
Debe informarle al programa qué datos de codificación obtener...
Suponemos que su base de datos anterior estaba codificada en utf8...
mysql_query('SET CHARACTER SET utf8') o die("La consulta falló: ". mysql_error())
;
Por supuesto, dado que esto sólo es necesario para 4.1 y superiores,
Por lo tanto podemos agregar juicio:
$mysqlversion = $db->query_first("SELECT VERSION() AS version");
si ($mysqlversion['versión'] >= '4.1')
{
mysql_query('SET CHARACTER SET utf8') o die("La consulta falló: ". mysql_error());
}
De esta forma, no importa cuál sea la codificación predeterminada de Mysql, podrás acceder a ella normalmente...
(No importa si estás depositando durante el período de supervivencia, depositando por un período fijo o incluso retirando pequeñas cantidades...)
Sin embargo, todo el mundo es internacional...
¿Sigues usando utf8?
¿Cómo transcodificarlo?
además……
¿Qué debo hacer si aparecen caracteres confusos durante la actualización de datos?
¡Ensalada!
Escuchemos el desglose la próxima vez...
=========================================== === =
Los datos deben actualizarse a 4.1
...
Primero tienes que exportarlo...
Decir que los extranjeros son realmente irresponsables...
El método de exportación anterior siempre perdía algunos caracteres chinos...
Por ejemplo, cambia "Amo a tu madre" por "Te amo"...
(Por lo general, se pierde la última palabra de un dato)
Todo esto tiene una generación de retraso...
(En palabras de la Hermana Pomegranate, "El hecho de un acto tan rebelde es realmente emocionante"...)
Para proteger tu frágil corazón...
También para mantener la ética y la moral tradicionales chinas...
Puede cambiar los campos cuyos datos contienen caracteres chinos a codificación binaria...
El método específico...
Puede ejecutar esta declaración:
ALTER TABLE `nombre de tabla` CONVERTIR A CONJUNTO DE CARACTERES binario;
De esta forma se eliminan aquellos campos de tipo carácter como:
CHAR, VARCHAR y TEXTO
se convertirá en
BINARIO, VARBINARIO y BLOB
Luego exporte e importe al entorno 4.1...
Por supuesto, la última tarea tediosa es:
Necesitas volver a cambiar sus tipos...
Hay una actualización a 4.1...
Por supuesto, también hay rebajas...
¿Cómo bajar de categoría? ? ?
Sandalias para ir al baño...
Y por favor pase a la página siguiente...
========================================= ==== ===
Los datos se degradaron desde 4.1.
Algunas personas descubrieron que los archivos SQL exportados desde 4.1 no se podían importar a programas de versiones inferiores...
El problema es realmente muy simple...
Y Mysql ya ha pensado en todo por nosotros...
Agregue el parámetro --compatible al exportar...
Asumimos que su base de datos está codificada en utf8...
Y la versión de la base de datos de destino es 4.0...
Luego escriba esto en la línea de comando:
shell>mysqldump --user=nombre de usuario --password=contraseña --compatible=mysql40 --default-character-set=utf8 base de datos > db.sql
El archivo SQL exportado de esta manera se puede importar con éxito a la base de datos de la versión inferior...
La parte de la base de datos finalmente está lista...
Pero, ¿cómo debemos prestar atención a la programación PHP?
Tengo que pedirte que pases a la página siguiente...
http://www.knowsky.com
================================================
Codificación de archivos PHP
¿Todos los archivos PHP deben convertirse a codificación UTF8?
Las sandalias te dicen NO...
digámoslo de esta manera...
Si el archivo contiene caracteres chinos que deben mostrarse...
Debe convertirse a codificación UTF8...
Pongamos un ejemplo:
// Soy una sandalia
tiempo de eco();
Aunque el código anterior tiene código...
Pero como existe en la anotación...
Sin salida...
Por lo tanto, no es necesario convertir esta página al formato UTF8...
Otro ejemplo:
echo "Soy Sandals";
Esto obviamente tiene salida de caracteres chinos...
Deberías simplemente convertir a UTF8...
Por supuesto, muchos programas ahora usan tecnología de plantilla (paquete de idiomas)...
No puede ver ningún carácter para la salida en el programa (archivo de paquete sin idioma)...
De esta manera, solo necesitamos convertir el archivo del paquete de idioma a codificación UTF8...
(Esta es la ventaja de los paquetes de idiomas... Ahahahahaha...)
'http://www.knowsky.com
====================================================
Intercepción china de UTF8
porque UTF8 usa tres bytes...
Entonces la función substr tradicional es inútil...
Muchos expertos han escrito funciones de interceptación de caracteres chinos UTF8...
Aquí hay algunos:
1. Calcule primero y luego tome
/**
* Autor: Tonto |
* Correo electrónico: [email protected] | hotmail.com
*Crear: 200512
* Uso: echo join('', String::subString_UTF8('caracteres chinos', 0, 1));
*/
ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE);
clase cadena {
función subString_UTF8($cadena, $inicio, $lenth)
{
$len = strlen($cadena);
$r = matriz();
$norte = 0;
$m = 0;
para($i = 0; $i < $len; $i++) {
$x = subcadena($cadena, $i, 1);
$a = base_convert(ord($x), 10, 2);
$a = substr('00000000'.$a, -8);
si ($n < $inicio){
si (substr($a, 0, 1) == 0) {
}elseif (substr($a, 0, 3) == 110) {
$yo += 1;
}elseif (substr($a, 0, 4) == 1110) {
$yo += 2;
}
$n++;
}demás{
si (substr($a, 0, 1) == 0) {
$r[] = subcadena($cadena, $i, 1);
}elseif (substr($a, 0, 3) == 110) {
$r[] = subcadena($cadena, $i, 2);
$yo += 1;
}elseif (substr($a, 0, 4) == 1110) {
$r[] = subcadena($cadena, $i, 3);
$yo += 2;
}demás{
$r[] = '';
}
si (++$m >= $longitud){
romper;
}
}
}
devolver $r;
} // Fin subString_UTF8
}//Fin de cadena
echo join('', String::subString_UTF8('caracteres chinos', 0, 1));
2. Creo que es muy inteligente cortar las sandalias primero y luego cortarlas...
Utilice la función de intercepción tradicional para truncar primero...
Luego determine si un solo carácter chino está dividido...
Si es así... entonces ocúpate de ello...
Es importante tener en cuenta que el tercer parámetro de la función substr debe ser mayor que 3...
En cuanto a por qué no usas sandalias, ¿puedes explicarlo?
// Una función de recorte para eliminar el último carácter de una cadena utf-8
// siguiendo las instrucciones en http://en.wikipedia.org/wiki/UTF-8
// dotann
// uso: $cadena = utf8_trim(substr($cadena,0,50));
función utf8_trim($cadena) {
$len = strlen($cadena);
para ($i=strlen($str)-1; $i>=0; $i-=1){
$hexadecimal .= ' '.ord($cadena[$i]);
$ch = ord($cadena[$i]);
if (($ch & 128)==0) return(substr($str,0,$i));
if (($ch & 192)==192) return(substr($str,0,$i));
}
retorno($cadena.$hexadecimal);
}
$cadena = 'caracteres chinos';
echo utf8_trim(substr($cadena,0,3));
3. Existen otros métodos,
Por ejemplo, 007pig es una función escrita en la versión china de nuestro vBulletin...
Corto y bueno...
Es inconveniente publicar el código fuente ...
Lo siento Bird...
Terminaré mi escritura aquí hoy...
También hay problemas como la transcodificación que no se han escrito...
Ocupado últimamente...
Continúa organizándote cuando tengas tiempo...
http://www.quchao.com/?p=6&pp=1