zoukankan      html  css  js  c++  java
  • st9720-GB 中文编码对照表

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

    .....

    .....

    下载地址:

    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会是这样的:

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

    通过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("
    ", "
    "), array('', ''), $font);
        # 177 == VIII  大于strlen==5 A2C0
         (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小科技欢迎您!”效果:

     

  • 相关阅读:
    VBA实现任意n阶幻方的一种填法(n≥3)
    业余兼职的全行业薪酬对照(发表者: swf11519 )
    在VBA中获取“我的文档”的目录路径
    应用API函数在用户窗体中画圆
    双色球历史数据
    一沙一世界(10亿光年),科学的图文介绍
    四阶素数幻方问题
    Android_左右滑动切换背景
    深圳中软实习始末
    Android系统Surface机制的SurfaceFlinger服务的启动过程分析
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4608045.html
Copyright © 2011-2022 走看看