考えられる解決策は次のとおりですが、テストされていないため、この点に注意してください。
しばらく前に、Oracleの特殊文字で同様の問題に遭遇しました。文字セットはUTF-16です。通常の32〜127の範囲外のウムラウトやその他のASCII文字などの奇妙なものがありました。
最初にその範囲外のHTMLエンコードを実行し、それをc#のデータテーブルにロードしてから、データテーブルがいっぱいになると(またはいっぱいになった後...)、それらのフィールドでhtmlデコードを実行します。
次のように、これを行うhtmlエンコード関数があります。
FUNCTION HTML_Encode_Special_Characters
(p_string IN VARCHAR2,
p_do_encode IN VARCHAR2 DEFAULT 'Y')
RETURN VARCHAR2 IS
first_location number := REGEXP_INSTR(p_string, '([^' || CHR(1) || '-' || CHR(127) || '])');
v_string VARCHAR2(32000);
v_char VARCHAR2(1 char);
v_ascii_number number;
BEGIN
IF p_do_encode = 'Y' AND first_location > 0 THEN
v_string := p_string;
FOR i IN first_location .. length(v_string) LOOP
v_char := substr(v_string,i,1);
v_ascii_number := ascii(v_char);
IF v_ascii_number > 128 THEN
-- just replace all of them
v_string := REPLACE (v_string, v_char,'&#' || v_ascii_number || ';');
END IF;
END LOOP;
RETURN (v_string);
ELSE
RETURN p_string;
END IF;
END;
したがって、これにより「文字列」データがテーブルに読み込まれ、特殊文字がある場合は、「&#189」などのように表示されます。
次に、C#側では、htmlデコードを使用して何かを行うことができます:
using System.Web;
HttpUtility.HtmlDecode(mystring);
再び...テストされていません。ただし、実装とテストは非常に簡単で、機能させるために少し調整する必要があります。
別の解決策は、データベースでデータ修正を実行して、これらすべての特殊文字を「通常の」表現(つまり、全角ダッシュから通常のダッシュ)に変更することです。これは、CHR()関数を使用していくつかの正規表現で実行し、DUMP()関数を使用して奇数データを表示することができます。