ついでに書くが

libxerces-cを使ってC++XMLをいじっているのだが、このlibxercesがなかなか曲者で、UnicodeXMLファイルをいじっていても、どうも出力を勝手にコンソールのロケールに合わせて変更してくれるらしいことにようやく気付いた。今までの端末はロケールUnicodeだったので、生でやってくれていると思ってて、そのために文字コード変換のコード(iconvを使ってUnicodeEUCに変換するモノ)まで作ったのに、その努力も台無しだ。

で、EUCロケールの端末を使った途端に端末の出力が大惨事になって困ってしまったのである。この辺りのことはlibxerces-cのドキュメントのどこかにありそうなもんだが、ドキュメントが結構いい加減なのでなかなか読み取れない。BSDでmanやったり仕様書ガンガン読んだりしてる人にしてみれば信じられないかもしれないが、Linuxでちょっとググったら分かってしまう時代から参入した私には難しいのである。

で、よくよく調べてみたらSTLstl::localeなんてモノがあるのな。全く信じられない世の中だ。cppreference厨な私にはちょっとどうしていいのか分からないのだが。STLの公式リファレンスみたいなのも、どこかにあったような気がするが…。

ちょっと探してみたがどうもないっぽいソース嫁ってことなのかそれとも。Wikipediaの項目にはいろんなリンクがあった。SGIの公式ページがあったが、std::localeはない。どういうこっちゃ。