Default encoding under windows
を参考にやってみました。
コンパイラが VC8 だったので、最初、手を抜いてソースコードを UTF-8 でファイルに保存して実行してみたら
#include <boost/locale.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/format.hpp>
int main()
{
// Create and install global locale
std::locale::global(boost::locale::generator().generate(""));
//std::locale::global(boost::locale::generator().generate("ja_JP.UTF-8"));
// Make boost.filesystem use it
boost::filesystem::path::imbue(std::locale());
// Now Works perfectly fine with UTF-8!
boost::filesystem::ofstream hello("こんにちわ.txt");
return 0;
}
出力されたファイル名が
こんにちめEtxt
なんじゃこれ???
あれこれ、試しているうちに、どうやら UTF-8 で保存したのがいけないみたいだという事で
#include <boost/locale.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/format.hpp>
int main()
{
// Create and install global locale
std::locale::global(boost::locale::generator().generate(""));
//std::locale::global(boost::locale::generator().generate("ja_JP.UTF-8"));
// Make boost.filesystem use it
boost::filesystem::path::imbue(std::locale());
// Now Works perfectly fine with UTF-8!
//boost::filesystem::ofstream hello("こんにちわ.txt");
// こ ん に ち わ
boost::filesystem::ofstream hello("\xE3\x81\x93\xE3\x82\x93\xE3\x81\xAB\xE3\x81\xA1\xE3\x82\x8F.txt");
return 0;
}
と正攻法で書きなおしたら、ちゃんと動作しました。
また、くだらない事に時間を費やしてしまった(´・ω・`)
0 件のコメント:
コメントを投稿