明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3840|回复: 8

[求助]如何转换将图面上繁体字或简体字互转呢?

[复制链接]
发表于 2008-9-8 06:50:00 | 显示全部楼层 |阅读模式
如何转换将图面上繁体字或简体字互转呢?
烦请各位高手帮忙解答一下
谢谢!
发表于 2008-9-8 21:18:00 | 显示全部楼层
需要互换表,然后一个文字一个文字替换。程序可能简单,但字码互换表比较麻烦
 楼主| 发表于 2008-9-10 22:48:00 | 显示全部楼层

再请问一下
那该怎样将 取得文字内容的
16进位 Unicode 转换成为
ASCII 十六进位

ASCII 十进位
呢?

烦请各位高手帮忙解答一下
谢谢!

 楼主| 发表于 2008-9-23 06:52:00 | 显示全部楼层
mccad发表于2008-9-8 21:18:00需要互换表,然后一个文字一个文字替换。程序可能简单,但字码互换表比较麻烦

该怎样建立字码互换表呢?

烦请各位高手帮忙解答一下
谢谢!

发表于 2008-9-23 22:19:00 | 显示全部楼层
这是三年前写的一个简单的程序,附件中有对照字符表,应该是做为简体转繁体或繁体转简体用。
  1. Option Explicit
  2.    
  3. Sub Main()
  4.     Dim Str As String
  5.     Dim tmpStr As String
  6.     Str = "a宁静的夏天,天空中繁星点点,心里头有些思念,思念着你的脸。"
  7.     tmpStr = ChtToChs(Str)
  8.     ThisDrawing.ModelSpace(0).TextString = tmpStr
  9.     ThisDrawing.ModelSpace(1).TextString = Str
  10. End Sub
  11. Function ChtToChs(Str As String) As String
  12.     Dim i As Long
  13.     Dim tmpStr As String
  14.     Dim s  As String
  15.     Dim StrList As Variant
  16.     StrList = GetStrList
  17.     For i = 1 To Len(Str)
  18.         s = Mid(Str, i, 1)
  19.         If Asc(s) <= -2050 Then
  20.             s = Chr(StrList(Asc(s) + 24159))
  21.         End If
  22.         tmpStr = tmpStr & s
  23.     Next
  24.     ChtToChs = tmpStr
  25. End Function
  26. Function Cht2Chs(Str As String) As String
  27.     Dim i As Long
  28.     Dim j  As Long
  29.     Dim tmpStr As String
  30.     Dim s  As String
  31.     For i = 1 To Len(Str)
  32.         s = Mid(Str, i, 1)
  33.         For j = 1 To Len(ChsStr)
  34.             If s = Mid(ChsStr, j, 1) Then
  35.                 s = Mid(ChtStr, j, 1)
  36.                 Exit For
  37.             End If
  38.         Next
  39.         tmpStr = tmpStr & s
  40.     Next
  41.     Cht2Chs = tmpStr
  42. End Function
  43. Function GetStrList() As Variant
  44.     Dim StrList(22109) As Long
  45.     Dim i As Long
  46.     Dim ChsStr As String
  47.     Dim ChtStr As String
  48.     ChsStr = GetStr(True)
  49.     ChtStr = GetStr(False)
  50.     For i = 1 To Len(ChsStr)
  51.         StrList(Asc(Mid(ChsStr, i, 1)) + 24159) = Asc(Mid(ChtStr, i, 1))
  52.     Next
  53.     GetStrList = StrList
  54. End Function
  55. Function GetStr(isChs As Boolean) As String
  56.     Dim strFile As String
  57.     Dim strPath As String
  58.     Dim strText As String
  59.     strFile = VBE.ActiveVBProject.FileName
  60.     strPath = Left(strFile, InStrRev(strFile, ""))
  61.     If isChs Then
  62.         strFile = "chsstr.dat"
  63.     Else
  64.         strFile = "chtstr.dat"
  65.     End If
  66.         Open strPath & strFile For Input As #1
  67.     Do Until EOF(1)
  68.         Line Input #1, strText
  69.         GetStr = GetStr & strText
  70.     Loop
  71.     Close #1
  72. End Function

本帖子中包含更多资源

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

x
发表于 2008-10-20 13:00:00 | 显示全部楼层

老大,试了不行呀。

 

本帖子中包含更多资源

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

x
发表于 2008-10-20 18:29:00 | 显示全部楼层
8行和9行转成:
    Debug.Print "未转换简体字符:" & Str
    Debug.Print "已转换繁体字符:" & tmpStr
发表于 2008-10-20 22:17:00 | 显示全部楼层
给一个双向转换的程序:大家可以试试,把它改造成适用于所有文本内容的转换程序。
  1. Sub Main()
  2.     Dim Str As String
  3.     Dim tmpStr As String
  4.     Str = "明经通道--AutoCAD机械设计园区AutoLisp,Inventor,VBA"
  5.     tmpStr = ChtToChs(Str)
  6.     Debug.Print "未转换简体字符:" & Str
  7.     Debug.Print "已转换繁体字符:" & tmpStr
  8.     'ThisDrawing.ModelSpace(0).TextString = tmpStr
  9.     'ThisDrawing.ModelSpace(1).TextString = Str
  10.     Str = tmpStr
  11.     tmpStr = ChsToCht(Str)
  12.     Debug.Print "已转回简体字符:" & tmpStr
  13. End Sub
  14. Function ChtToChs(Str As String) As String
  15.     Dim i As Long
  16.     Dim tmpStr As String
  17.     Dim s  As String
  18.     Dim StrList As Variant
  19.     StrList = GetChtStrList
  20.     For i = 1 To Len(Str)
  21.         s = Mid(Str, i, 1)
  22.         If Asc(s) <= -2050 Then
  23.             s = Chr(StrList(Asc(s) + 24159))
  24.         End If
  25.         tmpStr = tmpStr & s
  26.     Next
  27.     ChtToChs = tmpStr
  28. End Function
  29. Function ChsToCht(Str As String) As String
  30.     Dim i As Long
  31.     Dim tmpStr As String
  32.     Dim s  As String
  33.     Dim StrList As Variant
  34.     StrList = GetChsStrList
  35.     On Error Resume Next
  36.     For i = 1 To Len(Str)
  37.         s = Mid(Str, i, 1)
  38.         If Asc(s) <= 0 Then
  39.             s = Chr(StrList(Asc(s) + 24313))
  40.         End If
  41.         If Err Then Debug.Print Asc(s): Err.Clear
  42.         tmpStr = tmpStr & s
  43.     Next
  44.     ChsToCht = tmpStr
  45. End Function
  46. Function GetChtStrList() As Variant
  47.     Dim StrList(22109) As Long
  48.     Dim i As Long
  49.     Dim ChsStr As String
  50.     Dim ChtStr As String
  51.     ChsStr = GetStr(True)
  52.     ChtStr = GetStr(False)
  53.     On Error Resume Next
  54.     For i = 1 To Len(ChsStr)
  55.         StrList(Asc(Mid(ChsStr, i, 1)) + 24159) = Asc(Mid(ChtStr, i, 1))
  56.     Next
  57.     GetChtStrList = StrList
  58. End Function
  59. Function GetChsStrList() As Variant
  60.     Dim StrList(24312) As Long
  61.     Dim i As Long
  62.     Dim ChsStr As String
  63.     Dim ChtStr As String
  64.     Dim iStr As Long
  65.     ChsStr = GetStr(True)
  66.     ChtStr = GetStr(False)
  67.     On Error Resume Next
  68.     For i = 1 To Len(ChtStr)
  69.         iStr = Asc(Mid(ChtStr, i, 1))
  70.         If iStr <> 32 And iStr <> 9 Then StrList(iStr + 24256 + 57) = Asc(Mid(ChsStr, i, 1))
  71.     Next
  72.     GetChsStrList = StrList
  73. End Function
  74. Function GetStr(isChs As Boolean) As String
  75.     Dim strFile As String
  76.     Dim strPath As String
  77.     Dim strText As String
  78.     strFile = VBE.ActiveVBProject.FileName
  79.     strPath = Left(strFile, InStrRev(strFile, ""))
  80.     If isChs Then
  81.         strFile = "chsstr.dat"
  82.     Else
  83.         strFile = "chtstr.dat"
  84.     End If
  85.         Open strPath & strFile For Input As #1
  86.     Do Until EOF(1)
  87.         Line Input #1, strText
  88.         GetStr = GetStr & strText
  89.     Loop
  90.     Close #1
  91. End Function
 楼主| 发表于 2008-10-23 07:26:00 | 显示全部楼层
本帖最后由 作者 于 2008-10-23 7:26:39 编辑

版主有各疑问
就是我用的是繁体系统
我在测试时

使用 GSEB 字体
将简体字写入CAD中,则内容居然变成了奇怪的代码

繁体显示: 植物种植设计统计表 ;内容: 植物种植设计统计表
简体显示: 植物种植设计统计表 ;内容: 植物种植\U+8BBE\U+8BA1\U+7EDF\U+8BA1表

繁体显示: 乔木 ;内容: 乔木
简体显示: 乔木 ;内容: \M+5C7C7\M+5C4BE

繁体显示: 环境绕射 ;内容: 环境绕射
简体显示: 环境绕射 ;内容: \M+5BBB7\M+5BEB3\M+5C8C6\M+5C9E4

请问这样该怎样处理文字取得问题呢?
希望各位高手可以解答一下
谢谢!

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-26 06:23 , Processed in 0.181909 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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