我有各种来源和各种欧洲语言的DXF文件,我在将源文件读入我的应用程序时遇到问题。 DXF文件是文本文件,可以由许多类型的CAD或类似软件生成。读入整个文件并保存到数组中,组代码位于数组的第一列,数据值位于第二列。所以当我处于调试模式时,我可以看到数组中的数据值。
我尝试过使用:
For Each sLine In File.ReadLines(strOrgDxfFileName, System.Text.Encoding.UTF32)
和
For Each sLine In File.ReadLines(strOrgDxfFileName, System.Text.Encoding.Default)
我正在使用带有德语操作系统的计算机,所以我想在使用.Default时它会选择德语代码页,因此会选择德国特殊字符äÄöÖüÜß。但是当使用来自不同来源的两个文件时,它有时会起作用,有时则不起作用。
使用.Default的文件1给出了“höhenmäßigangepaßt”这是正确的。 使用.UTF8的文件1给出了“h henm igangepa t”,这是不正确的。
使用.Default的文件2给出了“Brückenstraße”,这是不正确的。 使用.UTF8的文件2给出了“Brückenstraße”,这是正确的。
我找不到正确阅读特殊字符的可靠方法。我也将获得其他语言的DXF文件,因此无论语言如何,无论操作DXF的操作系统或阅读计算机的操作系统如何,我都必须获得特殊字符。
我几天来一直在和这个争斗,但没有到达任何地方。有人可以提供一些建议吗?
本
答案 0 :(得分:-2)
试试这个,如果有工作让我知道
Encoding.ASCII.GetString(Encoding.UTF8.GetBytes(yourString))
或以这种方式尝试
Dim converted as Byte() = Encoding.Convert(utf8, Encoding.UTF8, _
Encoding.GetEncoding(28591))
如果我能帮到你并且我认为你想要做的是,你正在尝试阅读DXF自动卡文件:我会建议你使用autocad库或第三方库 一步到位: 1.访问此链接:Link to download DXF Library并搜索netDxf 1.1.2并下载。 2.将库导入您的项目并使用这段代码:
public static void Main()
{
// by default it will create an AutoCad2000 dxf version
DxfDocument dxf = new DxfDocument();
// add your entities here
dxf.AddEntity(entity);
// save to file
dxf.Save(filename);
// load file
DxfDocument dxfLoad = DxfDocument.Load(filename);
}
让我知道如果解决你的问题。
如果你想要的任何语言的原始文件试试这个:
Dim strTest = File.ReadAllText("your_german_file.txt", System.Text.Encoding.Default)
或
Dim reader As New StreamReader("C:\example.txt", System.Text.Encoding.Default)
因为@Joel Coehoorn所说的