vb .net 2015编码无法显示特殊字符

时间:2016-04-28 17:48:27

标签: vb.net encoding

我有各种来源和各种欧洲语言的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的操作系统或阅读计算机的操作系统如何,我都必须获得特殊字符。

我几天来一直在和这个争斗,但没有到达任何地方。有人可以提供一些建议吗?

1 个答案:

答案 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所说的