1

データベースからデータを取得して.csvファイルに出力するac#アプリケーションを作成するように依頼されたクライアントがいます。ここまでは順調ですね。

このDBにはいくつかのUnicode文字が含まれており、クライアントがExcelで.csvを開くと、それらの文字は「奇妙」に見えます。例:x0096は、クライアントがダッシュのように見えるべきだと考えた場合、ユーロ通貨記号の横にニンジンが上にあるAのように見えます。

だから私はそれらのキャラクターを「奇妙ではない」ように見せるように頼まれました。

私はそれぞれの奇妙なキャラクターのコードを書きました(私は以下の12行のようにしています)。

input = input.Replace((char)weirdCharacter, (char)normalCharacter);

より良い方法がなければなりません。

4

2 に答える 2

1

HTMLファイルを生成しているときに同じ問題が発生しました。私にとっての解決策は、出力ファイルのエンコーディングを変更することでした。

StreamWriter swHTMLPage = 
                new System.IO.StreamWriter(OutputFileName, false, Encoding.UTF8);

Encoding.UTF8パラメーターを追加すると、文字が正しく表示され始めました。Excelが関係しているので、これをソリューションに適用できるかどうかはわかりませんが、適用できると確信しています。

于 2013-01-23T14:45:18.247 に答える
0

Vincent Jamesが言うように、これがエンコーディングの問題である場合、これを修正する理想的な方法は、値をデコード/エンコードするときに正しいエンコーディングを使用することですが、それでも機能しない場合は...

これはかなり簡単だと思います。どう思いますか?:

Dictionary<char, char> substitutions = new Dictionary<char, char> {
  {'\0x0096', 'F'}, {'\0x0101', 'O'}, {'\0x0121', 'O'}, ...
};

foreach(KeyValuePair<char, char> pair in substitutions)
{
   input.Replace(pair.Key, pair.Value);
}
于 2013-01-23T14:48:35.747 に答える