st9720-GB 中文编码对照表

时间:2022-03-16 20:19:48

做嵌入式LED 屏幕显示的时候,需要ST9720 中文编码,网上找了好几个版本,版本不同居然对应的code也不同!找了一个靠谱的pdf版本编码对照表,供大家参考

st9720-GB 中文编码对照表

.....

.....

 

下载地址:

https://www.powertip.com.tw/upload/technical/st7920-GB.pdf

https://files.cnblogs.com/files/dcb3688/st7920-GB.pdf

https://files.cnblogs.com/files/dcb3688/ST7920c30%28ch%29.pdf

 

因为网上找的都是pdf格式,所以想把对照表转换成sql,找的时候直接select。

转换的方法是这样的,先把pdf转换为doc或txt,在通过读取doc或txt,依次每行插入数据库,但发现个问题,直接复制pdf内容到剪贴板粘贴到txt中的会丢失为空的占位符。比如: A1A1 就是一个空值,但直接复制到txt会是这样的:

st9720-GB 中文编码对照表

 

所以,这种方法不可取,后来想到一个办法,就是每一个字符显示一行(包括code),然后通过特殊字符进行站位,等替换空格为换号(^p)后,在替换\n\r

st9720-GB 中文编码对照表

通过php读取txt,连接mysql 插入数据库

数据库结构:

CREATE TABLE `st9720` (
`id`
int(11) NOT NULL AUTO_INCREMENT,
`code`
char(10) NOT NULL COMMENT 'e id',
`word`
char(10) NOT NULL,
PRIMARY KEY (`id`),
KEY `code` (`code`),
KEY `word` (`word`)
) ENGINE
=InnoDB DEFAULT CHARSET=utf8 COMMENT='ST7920 GB中文编码表';

 

完整PHP代码:

$file = fopen("st9720.txt", "r");
$fonts = [];
$i = 0;
# 输出文本中所有的行,直到文件结束为止。
while (!feof($file)) {

$fonts[$i] = fgets($file); # 从文件指针中读取一行
$i++;
}

fclose($file);
$data = [];
$row = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F'];

$ii = 0;
foreach ($fonts as $font) {
$ii++;
$font = str_replace(array("\r", "\n"), array('', ''), $font);
# 177 == VIII 大于strlen==5 A2C0\r (10)==len(5)
if (strlen($font) == 4 && (($ii < 177 && substr($font, 0, 1) == "A") || $ii > 177)) {
$rows = 0;
$head = strval($font);
}
else {
$pre = substr($head, 0, 2);
$mid = substr($head, 2, 1);
$data[$pre][$mid . $row[$rows]] = $font;
$rows++;
}
}




# 连接到数据库
$conn = mysqli_connect("127.0.0.1", "root", "root", "mydb");
/**
*

foreach ($data as $pre => $mrowvalue) {
foreach ($mrowvalue as $mid => $word) {
$code = $pre . $mid;
$sql = "insert into st9720 (code,word) values('{$code}','{$word}')";
if (!mysqli_query($conn, $sql)) {
die('Error: ' . mysqli_error($conn));
}
echo "添加一条记录";
}
}
//关闭连接
mysqli_close($conn);

*/



$string="xiao小科技欢迎您!";
for($i=0;$i<mb_strlen($string);$i++){
$word= mb_substr($string, $i,1);
$result = $conn->query("select * from st9720 where BINARY word='{$word}'"); # 区分大小写
if($result){
$r= $result->fetch_array();
echo "{$word} :{$r['code']} <hr>";

}

}

 

st9720-GB.txt 与php代码及sql文件

https://files.cnblogs.com/files/dcb3688/st9720-txt-sql.7z

查找文字“xiao小科技欢迎您!”效果:

st9720-GB 中文编码对照表