サーバーからいくつかのxmlを受け取り、いくつかのコンボボックスにデータを入力するためにそれを解析しようとするC++プログラムがあります。
<?xml version="1.0"?>
<CustomersMachines>
<Customer name="bob" id="1">
<Machine name="office1" id="1" />
<Machine name="officeserver" id="2" />
</Customer>
</CustomersMachines>
これらの値の場合、TinyXML は適切に解析し、結果のコンボ ボックスは意図したとおりに設定されます。この問題は、マルチバイト文字が name 要素の末尾 (バイト数によっては、その近く) に配置されている場合に発生します。
<Customer name="boß" id="3">
値boß" id=がコンボ ボックスに入力されます。
デバッガーをステップ実行すると、マルチバイト文字が ReadText() に渡されると、要素内の次の 1 ~ 3 個のシングルバイト文字がスキップされますが、自動的に含まれることがわかります。そのため、tinyXML は終了引用符を登録せず、保持します。次のものに到達するまで解析します。xml を送信するサーバー上で実行されているアプリケーションは主に ISO-8859-1 エンコーディングを使用しますが、tinyXML はデフォルトで UTF-8 に設定されています。
問題を解決するように見えますが、プログラムの他の場所でかなりの数の問題を引き起こす TIXML_ENCODING_UNKNOWN を使用するようにデフォルトで tinyxml を微調整しようとしました。私が試した他のことは、送信する前にxmlサーバー側をutf8_encodeすることです(ただし、これにより、マルチバイト文字があるべきコンボボックスに奇妙な文字が表示されます)、送信されるxmlにエンコードを強制しますクライアントプログラムは役に立ちません。
この場合、マルチバイト文字が次の 1 ~ 3 文字を自動的に無視するのを防ぐ方法を知っている人はいますか?