2011年1月24日月曜日

xmlTextReaderReadでコケた

日本語を含んだXMLの場合は特に、なのかもしれないが。
xmlTextReaderRead()を読んでいると、エラーが発生して途中で終わってしまうことがある。

戻り値が1なら成功、0なら終わり、それ以外はエラー発生でちゃんと処理することが大切。
うっかり忘れていて、ハマった...

日本語の文字列(文字数制限付き)をXMLに書き出す時に、文字の途中でぶっちぎれてしまったのが原因のようす。書き出す時は良いけど、そのデータを読み出す時に「エンコーディングエラー」と言われた。エンコーディングエラーというよりは、日本語文字列が途中で化けているのが原因だった。

C言語で日本語を含む文字列の操作は難しい....文字列処理関数が、基本的に「バイト」単位だからなぁ。英数字と日本語が混在している場合で「120文字以下に切り詰める」ってどうやれば良いんだろう?