0


0

CSVファイルのUnicode?

CSVファイルを生成する必要があります。 たぶんlibを使用する代わりに自分のコードでファイルをダンプしているので、私は「間違っている」のかもしれません。

私はすべてが正しいようです。 引用符、コンマ、すべてが完全にエスケープされているようです。 かなり簡単でした。 問題は、テストするためにユニコード文字列を使用していて、それらが????として出てくることです。 MS Excelを使用してテスト文字列でファイルを保存し、CSVでファイルを開くと同じ問題が発生します(ユニコード文字が?????になります)。 Unicodeはサポートされていませんか?

私はちょうどウェブページに出力するのではなく、このような文字列をダンプしようとしました

var f = new System.IO.StreamWriter(filename, false, System.Text.Encoding.Unicode);

そして今、私はユニコードテキストを見るが、すべてが今1列にあります。 変なのは、選択したテキストエディタですべてが正常に見えることです。いくつかの列をコピーして貼り付け、.csvとして保存するときに貼り付けると、列が正常に表示されます。 おそらくユニコードを取り除きますが。

これを適切に保存するにはどうすればよいですか?

3 Answer


3


`System.Text.Encoding.Unicode`はUTF-16エンコーディングを使用します。 テキストエディターにUTF-16でデコードするように指示してください。出力ファイルを表示するために使用しているエディターのデフォルトはUTF-8またはASCIIであると推測しています。 その場合、代わりに `System.Text.Encoding.UTF8`で出力をエンコードすることもできます。


1


テキストファイル(またはhtmlページ)にUnicode文字(UTF-8またはUTF-16)が含まれていることをマークし、Unicodeテキストをサポートするテキストエディターを使用していることを確認する必要があります。 Windowsでは、メモ帳が適しています。

テキストファイル(.csvなど)にUnicodeテキストが含まれているとマークするには、テキストファイルの最初の文字としてhttp://en.wikipedia.org/wiki/Byte_order_mark[Byte Order Mark(BOM)]を記述する必要があります。 。 UTF-16リトルエンディアン(Intel)の場合、BOMはバイト0xFF、0xFEになります。 バイトオーダーマークは、ドキュメント内の文字がビッグエンディアンとリトルエンディアンのどちらで注文されているかをドキュメントリーダーに伝えます。 BOM文字は、Unicode文字テーブルで予約されている非印刷文字です。 このBOMは、ASCIIテキストをUTF-8およびその他のUnicodeエンコーディングと区別するためにも使用できます(UTF-8 BOMバイトシーケンスがUTF-16などと異なるため)。

一部のドキュメント作成者は、BOMを作成するか、BOMを含めるか除外するかを選択できます。 バイナリ16進ダンプを使用してテキストファイルのバイトを表示し、BOMがあるかどうかを判断します。 テキストエディタを使用しないでください-BOMは非表示文字です。

生成しているHTMLページにUnicode文字が含まれていることを示すには、Content-Typeヘッダーを設定してUnicode文字セットを示す必要があります。 `Content-Type:text / html; charset = utf-8`は、たとえば、UTF-8でエンコードされたUnicodeテキストを示します。


0


また、Wordが使用しているフォントに、表示しようとしているこれらの文字がない場合もあります。 Wordを開き、Altキーを押しながらテンキーをマッシュすると、フォントが数学フォントに変更されますが、問題のフォントから欠落している文字アイテムが表示されます。