2

.NET 4.0 で記述された Web サイトと WinForms アプリケーションがあり、ユーザーは任意の Unicode 文字 (かなり標準) を入力できます。

問題は、少量のデータが古いメインフレーム アプリケーションに送信されることです。テスト中に、ユーザーが文字を含む名前を入力すると、メインフレーム プログラムがクラッシュしました。名前はBOËNS。E はサポートされていません。

Unicode char が EBCDIC でサポートされているかどうかを検出する最良の方法は何ですか?

次の正規表現を使用してみましたが、メインフレームに適した標準の特殊文字 (/、_、:) が制限されていました。

1 つのメソッドを使用して各文字を検証するか、文字列に渡したメソッドを使用して、EBCDIC でサポートされていない文字が文字列に含まれている場合に true または false を返すことをお勧めします。

4

2 に答える 2

1

まず、EBCDICの適切なEncoding インスタンスを取得して、コード ページ ID をパラメーターとして受け取る静的GetEncodingメソッドを呼び出す必要があります。

それができたら、DecoderFallbackプロパティをclassの静的ExceptionFallbackプロパティDecoderFallbackの値に設定できます。

次に、コード内で文字列内の各文字をループし、GetBytesメソッドを呼び出して文字をバイト シーケンスにエンコードします。エンコードできない場合は、 aDecoderFallbackExceptionがスローされます。への各呼び出しをブロックでラップしてGetBytestry/catchどの文字がエラーであるかを判断する必要があります。

なお、失敗した文字の位置を知りたい場合は上記が必要です。文字の位置を気にしない場合、文字列が全体としてエンコードされない場合はGetBytes、文字列パラメーターを受け取るメソッドを呼び出すだけDecoderFallbackExceptionで、エンコードできない文字が遭遇した。

于 2011-02-24T19:47:53.167 に答える
0
于 2011-02-24T19:41:30.297 に答える