構成ファイルを低レベルのハードウェアデバイスに返すWebサービスがあります。このデバイスの製造元は、この構成ファイルに対して1バイトの文字セットのみをサポートしていると言っています。
このwikiページで、次は1バイト文字セットである必要があることがわかりました。
- ISO 8859
- ISO / IEC 646(これはここでは見つかりませんでした)
- さまざまなMicrosoft/IBMコードページ
しかし、これらの文字セットでEncoding.GetMaxByteCount(1)を呼び出すと、常に2が返されます。
他のさまざまなエンコーディング(IBM437など)も試しましたが、GetMaxByteCountは他の文字セットに対しても2を返します。
これによると、メソッドEndoding.IsSingleByteは信頼できないようです。
アプリケーションがIsSingleByteの値をどのように処理するかに注意する必要があります。エンコーディングがどのように進行するかという仮定はまだ間違っている可能性があります。たとえば、Windows-1252のEncoding.IsSingleByteの値はtrueですが、Encoding.GetMaxByteCount(1)は2を返します。これは、メソッドが前のデコーダー操作からの潜在的な残りのサロゲートを考慮するためです。
また、メソッドEncoding.GetMaxByteCountには、これによると同じ問題がいくつかあります。
GetMaxByteCountは、前のデコーダー操作からの潜在的な残りのサロゲートを考慮することに注意してください。デコーダーのため、メソッドに値1を渡すと、ASCIIなどのシングルバイトエンコーディングの場合は2が取得されます。この情報が必要な場合は、アプリケーションでIsSingleByteプロパティを使用する必要があります。
このため、何を使用すればよいかわかりません。