Heim > Artikel > Backend-Entwicklung > So lesen Sie Punktmatrixdaten chinesischer Schriftzeichen in PHP
In diesem Artikel wird hauptsächlich das Lesen der Punktmatrixdaten chinesischer Schriftzeichen in PHP vorgestellt. Ich hoffe, dass er für alle hilfreich ist.
Lösung:
Die vereinfachte chinesische Standardschriftbibliothek umfasst 7445 Zeichen, darunter 6773 chinesische Schriftzeichen, darunter 3755 chinesische Schriftzeichen der ersten Stufe und 3008 chinesische Schriftzeichen der zweiten Stufe. Verwendung einer 2-Byte-Kodierung (16-Bit-Binär).
Standortcode: Der nationale Standard GB2312 legt fest, dass alle chinesischen Standardzeichen und -symbole eine 94×94-Matrix bilden. In dieser quadratischen Matrix wird jede Zeile als „Bereich“ und jede Spalte als „Bit“ bezeichnet. Daher bildet diese quadratische Matrix tatsächlich einen Bereich mit 94 Bereichen (Bereichsnummern sind 0 bis 1 bis 94) Es gibt jeweils 94 Ziffern (Ziffernnummern sind 01 bis 94) chinesischer Zeichensätze im Bereich. Die Ortsvorwahl und die Ortsnummer eines chinesischen Schriftzeichens werden einfach kombiniert, um den „Ortscode“ des chinesischen Schriftzeichens zu bilden. In der Ortsvorwahl chinesischer Schriftzeichen sind die oberen beiden Ziffern die Ortsvorwahl und die unteren beiden Ziffern die Positionsnummer. Es ist ersichtlich, dass zwischen Ortscodes und chinesischen Schriftzeichen oder Symbolen eine Eins-zu-eins-Entsprechung besteht.
Interner Code: Der interne Code chinesischer Schriftzeichen bezieht sich auf die Kodierung chinesischer Schriftzeichen in Computern. Es gibt einen kleinen Unterschied zwischen dem Maschinencode und dem Standortcode. Derzeit belegt der interne Code eines chinesischen Zeichens bei den meisten Computersystemen in China zwei Bytes, die als höherwertiges Byte bzw. niederwertiges Byte bezeichnet werden. Die Beziehung zwischen diesen beiden Bytes und dem Ortscode ist wie folgt: Intern Code hoher Ordnung = Vorwahl + A0H (H steht für Hexadezimalzahl) Die untere Ziffer des inneren Codes = Bitcode + A0H. Beispielsweise ist die Vorwahl des chinesischen Zeichens „ah“ „1601“ und die Vorwahl und Der Bitcode wird jeweils hexadezimal ausgedrückt, also „1001H“, dann ist sein interner Code „B0A1H“. Unter diesen ist B0H das höherwertige Byte des internen Codes und A1H das niederwertige Byte des internen Codes.
Gibt eine Zeichenfolge zurück, die aus 0 und 1 besteht
<?php /** * 读取汉字点阵数据 * */ $str = "中华人民共和国"; $font_file_name = "simsun12.fon"; // 点阵字库文件名 $font_width = 12; // 单字宽度 $font_height = 12; // 单字高度 $start_offset = 0; // 偏移 $fp = fopen($font_file_name, "rb"); $offset_size = $font_width * $font_height / 8; $string_size = $font_width * $font_height; $dot_string = ""; for ($i = 0; $i < strlen($str); $i ++) { if (ord($str{$i}) > 160) { // 先求区位码,然后再计算其在区位码二维表中的位置,进而得出此字符在文件中的偏移 $offset = ((ord($str{$i}) - 0xa1) * 94 + ord($str{$i + 1}) - 0xa1) * $offset_size; $i ++; } else { $offset = (ord($str{$i}) + 156 - 1) * $offset_size; } // 读取其点阵数据 fseek($fp, $start_offset + $offset, SEEK_SET); $bindot = fread($fp, $offset_size); for ($j = 0; $j < $offset_size; $j ++) { // 将二进制点阵数据转化为字符串 $dot_string .= sprintf("%08b", ord($bindot{$j})); } } fclose($fp); echo $dot_string; ?>
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich sein wird.
Verwandte Empfehlungen:
Rekursive PHP-Durchquerung zur Erzielung einer unendlichen Klassifizierung
PHP-Methode zur Implementierung einer Ringwarteschlange basierend auf Memcache
Das obige ist der detaillierte Inhalt vonSo lesen Sie Punktmatrixdaten chinesischer Schriftzeichen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!