2

以前に書き込んだファイルから XML を読み込もうとしていたアプリケーションから、クラッシュ レポートを受け取りました。ユーザーにファイルを送ってもらうように依頼した後、書かれているはずのものと比較したところ、これまでに遭遇したことのない非常に奇妙な問題が見つかりました。

文字の一部 (すべてではない) がドットなしの iiに置き換えられました。ıたとえば、「title」という名前のノードは問題ありませんでしたが、「initialdirectory」という名前のノードでは、最初の i が置き換えられ、2 番目のノードはそのままでしたınitialdirectory

今日まで私はそのような文字があることさえ知りませんでしたが、今では知っていて、そのように書かれた方法がわかりません.XMLはXmlWriterUTF8エンコーディングを使用して書かれていました. 複雑なことは何もない、普通の毎日の書き込みです。

私は通常 (まあ、Resharper を取得すると、パラメーターをスキップすると怒鳴られるので) etcStringComparison.OrdinalIgnoreCaseを実行するときに使用しますIndexOfが、データを書き込むときにこれをどのように行うべきかについて途方に暮れています。スレッド文化を変える。

誰かが以前に同様の問題を経験したことがありますか?もしそうなら、それに対処する最善の方法は何ですか?

4

1 に答える 1

5

トルコ語には 2 つの i があります。1 つはドット付き、iもう 1 つはドットなしıです。大文字では、最初のものにはドットがİあり、2 番目のものにはありませんI

ある時点で、プログラムはInitialDirectory、世界の一部の地域ではトルコ語であることが知られているデフォルトのロケールに従って小文字に変換しています。この問題を解決するには、アメリカ英語などの固定された既知のロケールを使用してケースを変換します。

更新:さらに良いことに、 「インバリアント カルチャ」ToLowerInvariant()で文字列を小文字に変換するメソッドを使用します。

于 2013-04-04T21:47:44.077 に答える