2016-04-28 28 views
1

さまざまなソースとさまざまなヨーロッパ言語のDXFファイルがあり、ソースファイルをアプリケーションに読み込む際に問題があります。 DXFファイルはテキストファイルであり、多くの種類のCADまたは類似のソフトウェアによって生成することができます。ファイル全体が読み込まれ、配列に保存され、グループコードは配列の最初の列に、データ値は2番目の列に格納されます。だから、デバッグモードになっているときに配列のデータ値を見ることができます。vb .net 2015エンコーディングは特殊文字を表示できません

私が使用して試してみた:

For Each sLine In File.ReadLines(strOrgDxfFileName, System.Text.Encoding.UTF32) 

と私はドイツのOSを使ってコンピュータを使用してい

For Each sLine In File.ReadLines(strOrgDxfFileName, System.Text.Encoding.Default) 

ので、私は.DEFAULTを使用しているとき、それは拾うだろうと想像ドイツ語のコードページ、したがってドイツ語の特殊文字äÄöÖüüß。しかし、異なるソースから2つのファイルを使用すると、時にはうまく動作しないことがあります。

ファイル1は.Defaultを使用すると正しい "höhenmäßigangepaßt"となります。 ファイル1が.UTF8を使用すると、 "h henmigangepa t"が正しくありません。

ファイル2は.Defaultを使用すると「Brückenstraße」が間違っています。 ファイル2に.UTF8を使用すると、正しい "Brückenstraße"が得られます。

特殊文字を正しく読み込む方法が見つからない。他の言語のDXFファイルも取得していますので、DXFが作成されたOSや読み込みコンピュータのOSに関係なく、言語に関係なく常に特殊文字を取得することが重要です。

私は数日間はこれと戦っていましたが、どこにもいませんでした。誰も助言を提供できますか?

ベン

+0

"DXFファイルのテキストエンコーディング" の検索を言ったの

Dim strTest = File.ReadAllText("your_german_file.txt", System.Text.Encoding.Default) 

または

Dim reader As New StreamReader("C:\example.txt", System.Text.Encoding.Default) 

をいくつかの提案があります。 –

+0

投稿する前にそれを繰り返してしまったので、私の場合は何も使用されていません。とにかくありがとう。 – BenS

答えて

-2

作品は、私はあなたによく得ることができると私はあなたがやろうとしている考えたものならば、私は

Encoding.ASCII.GetString(Encoding.UTF8.GetBytes(yourString)) 

を知っているか、またはこのよう

Dim converted as Byte() = Encoding.Convert(utf8, Encoding.UTF8, _ 
              Encoding.GetEncoding(28591)) 

それを試してみましょう場合は、これを試してくださいあなたはDXF Auto Card Fileを読もうとしています:オートキャドライブラリーまたはサードパーティライブラリーを使用するために私はあなたにエーテルアドバイスをします ステップ: 1. vこのリンク:Link to download DXF LibraryとnetDxf 1.1.2を検索してダウンロードしてください。プロジェクトにライブラリ2.import とコードのこの平和を使用します。

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); 
    } 

をし、あなたの問題を解決するなら、私に知らせてください。

任意の言語であなたが望むそのRAWファイルには、このしようとした場合:理由@Joel Coehoornが

+0

最初のコード例は、ファイル全体を1行の疑問符として返します。しかし、次のコードを使用すると理解できません。 'Dim List lines Of New List(Of String) if strOrgDxfFileName <> "" Then lines.AddRange(ReadAllLines() strOrgDxfFileName)) End If lLines = lines.Count ' コードの2行目で、エンコードにSystem.Textを接頭辞として付ける必要があり、「utf8」にエラーが表示されます。 DXFファイルから読み込まれる文字列はどこですか? – BenS

+0

大丈夫あなたが開発に使用している環境の名前は何ですかSir – Michael

+0

私はちょうど私の答えを編集しました – Michael