明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3734|回复: 42

[源码] 字符串编码转换:简体中文转繁体Big5

[复制链接]
发表于 2024-11-28 17:33:43 | 显示全部楼层 |阅读模式
本帖最后由 NetBee 于 2024-11-28 18:47 编辑

最近在完善ZBBZ3.0
发现若操作系统是Big5的话,界面显示是乱码。
本来用转换后的lsp及DCL重新编译是最快的。

但好久没有搞LSP了,一拿起来LSP就放不下,所以继续深入研究了一下。
照例将论坛的帖子翻了个低朝天,但都没有现成的,有一个是exe程序,另一个是lisp,但是用了转换库。
lsp简体转繁体v1.1:http://bbs.mjtd.com/thread-186847-1-1.html
我也来个简体中文转换繁体big编码小程序http://bbs.mjtd.com/thread-186902-1-1.html
都不是我想要的,直到:
字符串UTF-8编码互转:http://bbs.mjtd.com/thread-190579-1-1.html
感觉有戏了,但没有Big5的。
又到网上翻。。。
经过不断的试验,总算搞定了。
  1. (defun GB2Big5 (str / file_list fileget stream)
  2.      (if (setq stream (vlax-create-object "Adodb.Stream"))
  3.        (progn
  4.          (if
  5.            (VL-CATCH-ALL-ERROR-P
  6.              (setq
  7.                RTN (VL-CATCH-ALL-APPLY
  8.                      '(lambda ()
  9.                         (vlax-put-property stream 'Type 2)
  10.                         (vlax-put-property stream 'Mode 3)
  11.                         (vlax-put-property stream 'Charset "Big5")
  12.                         (vlax-invoke stream 'Open)
  13.                         (vlax-invoke stream 'WriteText str)
  14.                         (vlax-put-property stream 'Position 0)
  15.                         (vlax-put-property stream 'Type 2)
  16.                         (vlax-put-property stream 'Charset "gb2312")
  17.                         (Vlax-Invoke-Method
  18.                                         stream
  19.                                         'ReadText
  20.                                         nil
  21.                         )
  22.                       )
  23.                    )
  24.              )
  25.            )
  26.             (progn
  27.              ;;(princ "读取失败!")
  28.               (setq RTN str)
  29.             )
  30.          )
  31.          (vlax-release-object stream)
  32.          RTN
  33.        )
  34.        strLst
  35.      )
  36.    )


示例:


  1. (defun C:TT()
  2.   (princ "No Convert:")
  3.   (princ "標註圖層")
  4.   (princ"\n")
  5.   (princ "ConvertTo:")
  6.   (princ(GB2Big5 "標註圖層"))
  7.   (princ)
  8. )



运行如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

 楼主| 发表于 2024-11-28 19:06:15 | 显示全部楼层
本帖最后由 NetBee 于 2024-11-28 19:07 编辑

不是字符转换,是编码转换。
CAD2021以前的LSP是不支持UTF8的。所以繁体操作系统中的繁体CAD是显示乱码,必须转码才能正常显示。
回复 支持 反对

使用道具 举报

发表于 2024-12-2 21:06:34 | 显示全部楼层
看到标题,想到多年前经常需要转码,那时有个插件。再后来很多年遇不到需要转码的场景,也不知是CAD更新的原因,所以再也用不到了
回复 支持 反对

使用道具 举报

发表于 2024-12-4 10:07:28 | 显示全部楼层
emk 发表于 2024-11-29 14:38
期待多国语言转换,过来看看

多国语言那就不叫转换,得先翻译。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-28 17:37:54 | 显示全部楼层
当然,Big5转GB2312也是一样的,反过来就行了。
回复 支持 反对

使用道具 举报

发表于 2024-11-28 18:06:26 | 显示全部楼层
Big5的操作系统不支持UTF?
回复 支持 反对

使用道具 举报

发表于 2024-11-28 18:15:10 | 显示全部楼层
谢谢大佬这麽辛苦、努力的修改
谢谢分享!
回复 支持 反对

使用道具 举报

发表于 2024-11-28 18:24:44 | 显示全部楼层
谢谢分享,支持一下
回复 支持 反对

使用道具 举报

发表于 2024-11-28 18:29:42 | 显示全部楼层
谢谢分享      
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-28 18:40:10 | 显示全部楼层
kozmosovia 发表于 2024-11-28 18:06
Big5的操作系统不支持UTF?

是Lisp不支持。
回复 支持 反对

使用道具 举报

发表于 2024-11-28 18:47:36 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-4-6 21:03 , Processed in 0.208730 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表