IEのRSS出力で制御コード文字が存在した場合C#での解決方法について
こんにちは。エンジニアのR.Nです。
今回のテクヤンは、
ある特定の豆腐文字(制御コード文字)がRSS出力タグの
・
・
内の文字列に含まれていた場合の解決方法について、ご紹介致します。
【Internet Explorerのエラー内容】 Internet Explorer ではこのフィードを表示できません このフィードにはコード上のエラーが含まれています。 詳細情報 テキストの内容に無効な文字が見つかりました。 行: XX 文字: XX <description>・</description>
上記のようなエラーが発生する原因としては、
・文字列内に制御コードが含まれている
ことが考えられますので、以下の対策を施す必要があります。
・シフトJISの1バイトコード(半角文字)のエリアの 0x00〜0x1f、0x7f 制御コード文字を除外する
C#でのサンプルは、
【サンプルコード】 string text = "title または descriptionのすべての文字列"; System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < text.Length; i++) { string subStr = text.Substring(i, 1); char c = subStr[0]; if (!((0x00 <= c && c <= 0x1f) || (c == 0x7f))) { sb.Append(subStr); } } if (sb.Length > 0) { text = sb.ToString(); } // ※textは制御コードの文字列が除外された状態になる。
上記の通りです。
制御コードの文字列を除外した状態で、
・
・
へ設定すると、IEでのエラーを解決することができます。