PHP读取汉字的点阵数据

项目中遇到的问题:

PHP如何读取汉字的点阵数据?想实现输入一段文字,能得到这一段文字的所有点阵码。

解决方法:

简体中文国标字库7445个字符,其中汉字6773个,包括一级汉字3755个,二级汉字3008个。采用2字节(16位二进制)编码。

区位码:国标GB2312规定,所有的国标汉字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个”区”,每一列称为一个”位”,因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94)、每个区内有94个位(位号分别为01到94)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的”区位码”。在汉字的区位码中,高两位为区号,低两位为位号。由此可见,区位码与汉字或符号之间是一一对应的。

内码:汉字的内码是指在计算机中表示汉字的编码。机内码与区位码稍有区别。目前,对于国内大多数的计算机系统,一个汉字的内码占两个字节,分别称为高位字节与低位字节,且这两位字节与区位码的关系如下: 内码高位=区码+A0H(H表示十六进制) 内码低位=位码+A0H 例如,汉字”啊”的区位码为”1601″,区码和位码分别用十六进制表示即为”1001H”,则它的内码为”B0A1H”。其中B0H为内码的高位字节,A1H为内码的低位字节。

返回由0和1组成的字符串

<?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;
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • PHP获取一段文本显示点阵宽度和高度的方法

    本文实例讲述了PHP获取一段文本显示点阵宽度和高度的方法.分享给大家供大家参考.具体如下: define("F_SIZE", 8); define("F_FONT", "arial.ttf"); function get_bbox($text){ return imagettfbbox(F_SIZE, 0, F_FONT, $text); } function text_height ($text) { $box = get_bbox($text

  • PHP读取汉字的点阵数据

    项目中遇到的问题: PHP如何读取汉字的点阵数据?想实现输入一段文字,能得到这一段文字的所有点阵码. 解决方法: 简体中文国标字库7445个字符,其中汉字6773个,包括一级汉字3755个,二级汉字3008个.采用2字节(16位二进制)编码. 区位码:国标GB2312规定,所有的国标汉字与符号组成一个94×94的矩阵.在此方阵中,每一行称为一个"区",每一列称为一个"位",因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94).每个区内有94个位(位号分

  • 如何使用ajax读取Json中的数据

    本文给大家分享一下,如何使用ajax读取Json中的数据. 一.基础知识 什么是json? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更易理解 JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台.JSON 解析器和 JSON 库支持许多不同的编程语言. JSON - 转换为 JavaScript 对

  • asp.net 读取并显示excel数据的实现代码

    我们的ASP页面将在远程服务器上,来读取我们的桌面Excel文件.首先,我们必须把它上传到远程服务器,然后retrive数据.因此,我们首先设计一个表格,上传到服务器.我们必须从文件retrive数据,再一次,所以我们将重新命名Excel,然后上传. 复制代码 代码如下: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits=&q

  • php基于dom实现读取图书xml格式数据的方法

    本文实例讲述了php基于dom实现读取图书xml格式数据的方法.分享给大家供大家参考,具体如下: <?php $doc = new DOMDocument(); $doc->load( 'books.xml' ); $books = $doc->getElementsByTagName( "book" ); foreach( $books as $book ) { $authors = $book->getElementsByTagName( "aut

  • php删除txt文件指定行及按行读取txt文档数据的方法

    本文实例讲述了php删除txt文件指定行及按行读取txt文档数据的方法.分享给大家供大家参考,具体如下: 向txt文件循环写入值: $keys = range(1,999); $file = fopen('key_11010000.txt',"w"); foreach($keys as $key){ fwrite($file,"$key\r\n"); } fclose($file); $f1 = fopen('key_11010000.txt','r'); whil

  • Python如何读取MySQL数据库表数据

    本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 代码: # -*- coding: utf-8 -*- import pandas as pd import pymysql ## 加上字符集参数,防止中文乱码 dbconn=pymysql.connect( host="**********", database="kimbo&

  • C#操作Clipboard读取剪切板中数据实例详解

    本文实例讲述了C#操作Clipboard读取剪切板中数据的方法.分享给大家供大家参考.具体分析如下: 1 自定义一个类,并且保证它的可序列化的:实现ISerializable接口:或者用[Serializable]标记(如果有父类,则父类也需要被标记:可以[NonSerialized()]标记类中不想被序列化的字段) 2 注册自定义数据格式:调用静态方法DataFormats.GetFormat() 3 保存数据到clipboard:利用IdataObject接口,创建一个数据对象,并设置数据:

  • php ajax异步读取rss文档数据

    RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者. 本文实例为大家分享了php ajax异步读取rss文档数据的相关代码,供大家参考,具体内容如下 代码如下: index.html <html> <head> <script> function showRSS(str) { if (str.length==0) { documen

  • ajax读取properties资源文件数据的方法

    本文实例讲述了ajax读取properties资源文件数据的方法.分享给大家供大家参考.具体实现方法如下: properties资源文件的内容如下: hello=englishww name=english zk emailEmpty=Field cannot be empty! emailInvalid=Invalid email address! js调用ajax处理代码: $.ajax({ type:'POST', dataType:'json', url:'/jeecms/jeecms/

  • JXTree对象,读取外部xml文件数据,生成树的函数

    /****************************************** *JXTree对象,读取外部xml文件数据,生成树 *@author brull *@email brull@163.com *@date 2007-03-27 *******************************************/ /*  *@param xmlURL XML文件的地址  */ var JXTree = function(xmlURL) {     var result =

随机推荐