中国語文字に関する質問

1591 ワード

コーディングの概要:
phpはどんな符号化の問題を採用するのではなく、あなたが出力する符号化の問題です.phpをu 8/gb 2312と書いても正常に使用できます.違いは、chrで得られたものは何ですか.chrは127より大きい文字を返すことができますが、phpがu 8/gb 2312を正常に解析できるという意味ではありません.1つの漢字はGB 2312で2バイトから構成されています.つまりFFFFFFです.u 8ではFFFFFFであり、chrは最初のFF、つまり255しか得られず、漢字の直接符号化を直接得ることができず、実際にはASCIIとGB 2312が互換性があり、これもchrが正常に値を取ることができる理由であり、chrは入力可能な文字列の値を取るためではなく、任意のバイナリ符号化に安全に使用することができるためである.画像ファイルの例を含めてecho ord('私')を見てください.ここでは230しか戻ることができなくて、私はu 8で保存したファイルで出力して、それは230しか得られなくて、230はhexに変換してE 6で、実際にu 8の中で私の符号化はE 68891で、このようにあなたは理解するようにしましょう、実はそれは最初のバイトecho chr(0 xE 6)だけを手に入れました.chr(0x88).chr(0x91);ここの例はu 8の場合に私のこの漢字を出力することができて、あなたは見て、ここは3回chrを使ってやっとこの漢字を得ることができます.
 
1.中国語文字のケースを照合する:(ファイルはgbkに符号化)
<?php
$str = "  ,hel  lo";
$dd=preg_match_all('/[\x80-\xff]./',$str,$match);
var_dump($match);
?>

出力:array(1){[0]=>array(4){[0]=>string(2)[あなた][1]=>string(2)[2]=>string(2)[3]=>string(2)}注記:1.gbkの中国語は1バイトで存在するため、ファイル符号化にgbkを用いる場合、[x 80-xff]を用いることができる.一致します.        2.unicodeは2バイト形式で存在するため、ファイルがunicodeと符号化されている場合は'/[x{4 e 00}-x{9 fff})/u'でマッチングする(4ビット16進法を使用する場合は「{}」とモード補正子「u」を付けなければならない).