dxf中文乱码问题(解决了!)
本帖最后由 作者 于 2009-11-20 13:55:42 编辑 <br /><br /> <p>收到一张不是AutoCAD的软件生成的dxf图纸,用记事本打开后,版本$ACADVER AC1009,也即是R12,其中有中文单行文字,在记事本中也可以找到相应的中文信息(丙烯罐区,雷达?%d位变送器),但是我用AutoCAD2009打开后发现中文变成乱码。并且我在CAD中查看了相应的中文乱码的属性内容,是±ûÏ©¹ÞÇø和 À×´ïÒ%%dλ±äËÍÆ÷ ,但是我在修改该文字样式的字体为宋体后,可以在这种文字样式下输入中文的单行文字,但是原先的中文还是乱码,只是形状发生了变化而已。</p><p>不知什么原因?难道是因为存在系统变量之类的设置?</p><p>附件是dxf图纸。</p><p><font color="#ff0000" size="5">解决办法</font></p><p><font color="#ff0000" size="5">对于R12版本,用记事本打开dxf<br/>在AC1009后面加上(表示使用简体中文)<br/> 9<br/>$DWGCODEPAGE<br/> 3<br/>ANSI_936</font></p><p><font color="#ff0000" size="5">对于2000以上的版本,将$DWGCODEPAGE后面的ISO8859-1改为ANSI_936</font></p> <p>需要使用软件将dxf文本文件进行转换,转换成unicode编码或这GB2312编码</p><p>但是这个软件无法转换R12版本,只能转换R14和2000版本。</p><p>不知道R12版本如何解决?</p><p></p> function XML() {} <p>R12,好老的版本了,呵呵</p><p>可以试下自己写个转码的?</p> 本帖最后由 作者 于 2009-11-20 8:56:53 编辑 <br /><br /> <p>我自己编写了个VBA进行转码</p><p class="MsoNormal"><font face="Arial" size="1">Sub con()<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">Dim mem() As Byte<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">fLength = FileLen("D:\</font><font face="宋体" size="1">自编程序</font><font face="Arial" size="1">\1.dxf")<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">ReDim mem(fLength) As Byte<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">Open "D:\</font><font face="宋体" size="1">自编程序</font><font face="Arial" size="1">\1.dxf" For Binary As #2<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">Get #2, , mem<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">Close #2<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">mem = StrConv(mem, vbUnicode, &H804)<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">svgfilename = "D:\</font><font face="宋体" size="1">自编程序</font><font face="Arial" size="1">\2.dxf"<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">Open svgfilename For Binary As #3<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">Put #3, , mem<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">Close #3<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1">End Sub<p></p></font></p><p class="MsoNormal"><font face="Arial" size="1"><p> 本来要实现将1.dxf转为2.dxf的,但是转完后,发现2.dxf打不开了。用记事本打开他们发现内容完全一致,就是二进制代码不一致。</p></font></p><p class="MsoNormal"><font face="Arial" size="1"><p>可能是我转码的这一句有问题<font face="Arial" size="1"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Arial;">mem = StrConv(mem, vbUnicode, &H804)</font></p></span></font></p><p class="MsoNormal"><font face="Arial" size="1"><p><font face="Arial" size="1"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: Arial;">不知道怎么解决。</font></p></span></font><font face="Arial" size="1"><p></p></font></p> d
页:
[1]