Prefácio:
Para ser honesto,
Sandálias também acha que UTF8 é uma coisa boa...
Afinal, mostrar a China, o Japão e a Coreia do Sul na mesma tela é muito atraente para os asiáticos orientais...
(É claro que os benefícios não se limitam a isso...)
Não apenas programas da web…
Os kernels de muitas aplicações estão começando a usar a codificação Unicode...
O objetivo é óbvio: suportar exibição em vários idiomas...
Todos os softwares da Microsoft são baseados em Unicode...
Portanto, o software japonês pode ser exibido normalmente no seu XP chinês...
E o chinês 98 causará caracteres distorcidos ao instalar software de outro idioma no kernel GB...
Quanto ao UTF8,
Pode-se dizer que é um ramo do Unicode.
Ele usa três bytes para salvar um caractere chinês...
(Unicode usa quatro bytes)
O software aplicativo desertou coletivamente para Unicode...
Não temos permissão para usar UTF8 em aplicações web?
Neste artigo, o Sandálias tentará introduzir a programação PHP sob codificação UTF8 em tantos aspectos quanto possível...
Quanto ao motivo pelo qual "chinês" é introduzido separadamente...
Em primeiro lugar, é porque realmente não há necessidade de considerar o UTF8 quando se trata de inglês…
A menos que você esteja planejando construir um sistema multilíngue...
(Quero fazer algumas reclamações: os estrangeiros hoje em dia não prestam atenção a esta questão quando escrevem programas...)
Em segundo lugar, os métodos de processamento de idiomas multibyte como China, Japão e Coréia sob codificação UTF8 são, na verdade, muito semelhantes...
Basta seguir a cabaça e desenhar o furo...
Ok... vamos começar com a parte de processamento do banco de dados...
=========================================
Conectando-se ao banco de dados
Muitas pessoas descobrirão que os dados estão confusos quando atualizarem para o Mysql 4.1...
Na verdade, é porque o Mysql suporta conjuntos de caracteres a partir de 4.1...
E o conjunto de caracteres padrão é UTF8...
(Prova completa da importância da integração com os padrões internacionais... Hehe...)
No passado, usávamos principalmente a codificação utf8 ou GBK...
É claro que os dados de saída estão distorcidos ...
Para resolver o código ilegível...
Você deve informar ao programa quais dados de codificação obter...
Presumimos que seu banco de dados anterior foi codificado em utf8...
Então
mysql_query('SET CHARACTER SET utf8') ou die("Query failed : " . mysql_error());
Claro, como isso é necessário apenas para versões 4.1 e superiores,
Portanto podemos adicionar julgamento:
$mysqlversion = $db->query_first("SELECT VERSION() AS version");
if ($mysqlversão['versão'] >= '4.1')
{
mysql_query('SET CHARACTER SET utf8') ou die("Falha na consulta: " . mysql_error());
}
Desta forma, não importa qual seja a codificação padrão do Mysql, você poderá acessá-lo normalmente...
(Não importa se você está depositando durante o período de sobrevivência, depositando por um período fixo ou mesmo sacando em pequenas quantias...)
Porém, todo mundo é internacional...
Você ainda está usando utf8?
Como transcodificá-lo?
além do mais……
O que devo fazer se aparecerem caracteres distorcidos durante a atualização de dados?
Salada!
Vamos ouvir o detalhamento da próxima vez…
=========================================== === =
Os dados precisam ser atualizados para 4.1
...
Você tem que exportá-lo primeiro ...
Dizer que os estrangeiros são realmente irresponsáveis...
O método de exportação anterior sempre perdia alguns caracteres chineses...
Por exemplo, troque "Eu amo sua mãe" por "Eu te amo"...
(Normalmente, a última palavra de um dado é perdida)
A coisa toda está uma geração atrás...
(Nas palavras da Irmã Pomegranate, “O fato de tal ato rebelde é realmente emocionante”...)
Para proteger seu coração frágil...
Também para manter a ética e a moral tradicionais chinesas...
Você pode alterar os campos cujos dados contêm caracteres chineses para codificação binária...
O método específico...
Você pode executar esta instrução:
ALTER TABLE `nome da tabela` CONVERT TO CHARACTER SET binário;
Desta forma, campos de tipo de caractere como:
CHAR, VARCHAR e TEXTO
será convertido em
BINÁRIO, VARBINÁRIO e BLOB
Em seguida, exporte e importe para o ambiente 4.1...
Claro, a última tarefa tediosa é:
Você precisa alterar seus tipos de volta...
Há uma atualização para 4.1...
Claro, também há rebaixamentos...
Como fazer o downgrade? ? ?
Sandálias para ir ao banheiro...
E por favor, vá para a próxima página...
======================================= ==== ===
Os dados foram rebaixados da versão 4.1.
Algumas pessoas descobriram que os arquivos SQL exportados da versão 4.1 não podiam ser importados para programas de versões anteriores...
Na verdade o problema é muito simples...
E o Mysql já pensou em tudo para nós...
Por favor adicione o parâmetro --compatível ao exportar...
Presumimos que seu banco de dados esteja codificado em utf8 ...
E a versão do banco de dados de destino é 4.0…
Em seguida, escreva isto na linha de comando:
shell>mysqldump --user=username --password=password --compatível=mysql40 --default-character-set=utf8 banco de dados > db.sql
O arquivo SQL exportado desta forma pode ser importado com sucesso para o banco de dados da versão inferior...
A parte do banco de dados está finalmente concluída...
Mas como devemos prestar atenção à programação PHP?
Eu tenho que pedir que você vá para a próxima página...
http://www.knowsky.com
============================================
Codificação de arquivo PHP
Todos os arquivos PHP precisam ser convertidos para codificação UTF8?
Sandálias dizem NÃO...
vamos colocar desta forma...
Se o arquivo contiver caracteres chineses que precisam ser exibidos...
Deve ser convertido para codificação UTF8...
Vamos dar um exemplo:
// Eu sou uma sandália
tempo de eco();
Embora o código acima tenha código ...
Mas como existe na anotação...
Sem saída...
Portanto esta página não precisa ser convertida para o formato UTF8...
Outro exemplo:
echo "I am Sandals";
Obviamente, isso tem saída de caracteres chineses ...
Você deve apenas converter para UTF8...
É claro que muitos programas agora usam tecnologia de modelo (pacote de idiomas)...
Você não pode ver nenhum caractere de saída no programa (arquivo de pacote sem idioma)...
Desta forma, só precisamos converter o arquivo do pacote de idiomas para a codificação UTF8...
(Essa é a vantagem dos pacotes de idiomas... Ahahahahaha...)
'http://www.knowsky.com
=================================================
Interceptação chinesa UTF8
porque UTF8 usa três bytes...
Portanto, a função substr tradicional é inútil...
Muitos especialistas escreveram funções de interceptação de caracteres chineses UTF8...
Aqui estão alguns:
1. Calcule primeiro e depois pegue
/**
* Autor: Dummy |
* E-mail: [email protected] | hotmail.com
*Criar: 200512
* Uso: echo join('', String::subString_UTF8('Caracteres chineses', 0, 1));
*/
ini_set('display_errors', 1);
relatório_erro(E_ALL ^ E_NOTICE);
classe String {
função subString_UTF8($str, $start, $lenth)
{
$len = strlen($str);
$r = matriz();
$n = 0;
$m = 0;
for($i = 0; $i < $len; $i++) {
$x = substr($str, $i, 1);
$a = base_convert(ord($x), 10, 2);
$a = substr('00000000'.$a, -8);
if ($n < $início){
if (substr($a, 0, 1) == 0) {
}elseif (substr($a, 0, 3) == 110) {
$eu += 1;
}elseif (substr($a, 0, 4) == 1110) {
$eu += 2;
}
$n++;
}outro{
if (substr($a, 0, 1) == 0) {
$r[] = substr($str, $i, 1);
}elseif (substr($a, 0, 3) == 110) {
$r[] = substr($str, $i, 2);
$eu += 1;
}elseif (substr($a, 0, 4) == 1110) {
$r[] = substr($str, $i, 3);
$eu += 2;
}outro{
$r[] = '';
}
if (++$m >= $lenth){
quebrar;
}
}
}
retornar $r;
} // Fim subString_UTF8
}//Fim da string
echo join('', String::subString_UTF8('Caracteres chineses', 0, 1));
2. Acho muito inteligente cortar primeiro as sandálias e depois cortá-las...
Use a função de interceptação tradicional para truncar primeiro...
Em seguida, determine se um único caractere chinês está dividido...
Se for... então lide com isso...
É importante observar que o terceiro parâmetro da função substr deve ser maior que 3...
Quanto ao porquê de você não usar sandálias, você pode explicar?
// Uma função trim para remover o último caractere de uma string utf-8
// seguindo as instruções em http://en.wikipedia.org/wiki/UTF-8
// dotann
// uso: $str = utf8_trim(substr($str,0,50));
função utf8_trim($str) {
$len = strlen($str);
para ($i=strlen($str)-1; $i>=0; $i-=1){
$hex.= ' '.ord($str[$i]);
$ch = ordem($str[$i]);
if (($ch & 128)==0) return(substr($str,0,$i));
if (($ch & 192)==192) return(substr($str,0,$i));
}
return($str.$hex);
}
$str = 'Caracteres chineses';
echo utf8_trim(substr($str,0,3));
3. Existem outros métodos,
Por exemplo, 007pig é uma função escrita na versão chinesa do nosso vBulletin...
Curto e doce...
É inconveniente liberar o código fonte...
Desculpe, pássaro...
vou terminar minha escrita aqui hoje...
Há também questões como transcodificação que não foram escritas...
Ocupado ultimamente...
Continue a organizar quando tiver tempo...
http://www.quchao.com/?p=6&pp=1