Excelスプレッドシートから取得した文字列の望ましくない文字を置き換えようとしています。私たちのOracleデータベースがWE8ISO8859P1文字セットを使用しているのは、Excelが「有益に」テキストに挿入する複数の文字を定義していないからです(中引用、emとenダッシュなど)。私はデータベースまたはExcelスプレッドシートの作成方法を変更する必要があります。Excelから読み取られた文字列の特定のUnicode文字を置換する
は、私は、このように文字列にセルの内容を取得します。Visual Studioのテキストビジュアライザ内の文字列を表示する
string s = xlRange.get_Range("A1", Missing.Value).Value2.ToString().Trim();
は、完全かつ正確に取得するテキストを示します。次の私が試してみて、望ましくないのいずれかの文字を置き換える(この場合は右カーリー引用記号):
s = Regex.Replace(s, "\u0094", "\u0022");
しかし、それは(テキストビジュアライザが、それはまだそこにあることを示して)何もしません。置き換えたい文字が実際にそこにあることを確認するために、私は試しました:
bool a = s.Contains("\u0094");
ただし、falseを返します。ただし、
bool b = s.Contains("”");
がtrueを返します。
.NETでの文字列の理解は、UTF-16でエンコードされていますが、ExcelではANSIが使用されている可能性があります。それで、Excelから出てくるテキストのエンコーディングを変更する必要があるのですか?あるいは私はここで何か他のことをやっていますか?アドバイスをいただければ幸いです。私はUnicodeとエンコーディングについて知ることができるすべての記事を読んで再読しましたが、まだ賢明ではありません。
はい、あなたは正しく、私の16進値は途方に暮れていました。私はUTF-16の代わりにWIN1252文字セットのコードポイントを使用していたことがわかります。ある日、私はこれをすべて理解していきます(それには、理解できないほど複雑なものがあります)。答えをありがとう。 –