ファイル読み込みについてなのですが、
文字コードがUNICODEの場合は出来たのですが、
UTF-8の場合、正しく読み込めないようなのですが、
何か原因があるのでしょうか?
ちなみに、読み込むファイルの文字コードはUTF-8にしています。
_wfopen_s(&fp, file_name, L"rt,ccs=UTF-8")でファイルを開いて、
fgetwcで読み込んでいるのですが、正しく読み込めません。
ちなみに、アクセス許可の種類をL"r"にしたら読み込めました。
原因(これが原因かもしれないでも構いません)とどのようにすればいいかを
教えて頂ければと思っています。
開発環境は、XP、Visual C++ 2010 Expressです。
No.1ベストアンサー
- 回答日時:
こんな感じで r でも rt でも普通に読み込めていますが……
そもそも _set_fmode() を明示的に呼び出さない限り、既定で r モードと rt モードは同じのはず。
// .cpp 拡張子で保存して C++ モードでコンパイルしてください。
#include <cstdio>
#include <locale>
#include <conio.h>
void main()
{
_wsetlocale(LC_ALL, L"");
FILE* fp = NULL;
#if 1
// BOM 無し UTF-8
const errno_t er = _wfopen_s(&fp, L"utf8_test.txt", L"rt,ccs=utf-8");
#else
// BOM 付き(先頭に+3バイト)
const errno_t er = _wfopen_s(&fp, L"utf8_bom_test.txt", L"rt,ccs=utf-8");
#endif
if (er == 0 && fp)
{
wint_t ch = 0;
while (WEOF != (ch = fgetwc(fp)))
{
putwchar(ch);
}
fclose(fp);
}
_putws(L"Press any key to exit...");
_getch();
}
・テキスト ファイル作成に使用したソフト(テキスト エディタなど)は何ですか?
・テキスト ファイルは UTF-8 フォーマットで正しく保存されていますか?
・テキスト ファイルの内容はどのようなものですか?
・0x0D (CR) のような制御コードが混ざっていませんか?
開示されている情報が少ないと、回答者も推測しづらいです。
回答ありがとうございます。
出来ました。
原因は、文字コード変換ソフトでした。
Visual C++ 2010で作成したソースコードのファイルをUnicodeやUTF-8などに
ソフトを使って変換していたのですが、そのソフトに原因があったようです。
メモ帳でUTF-8に保存し直してから試してみたらうまくいきました。
Unicodeで問題なかったのでUTF-8でも問題ないだろうと思ってしまいました。
でも、エディタ(サクラエディタ)では問題なく開けているので、
少し疑問が残りますが。
一応多くのファイルで試しておきたかったのですが、
1つ1つのファイルをUTF-8などに保存し直すのは時間がかかるので、
変換ソフトを使いました。
rモードとrtモードは_set_fmode()を呼び出さない限り意味が無いんですね。
ネットで色々調べていたらrtと書いてあるサイトもあったので、
rモードとrtモードどちらも試していて、rtモードで試している時に
質問させて頂いたのでrtのままでした。
まだ、細かい確認はしていないのですが、今の所ちゃんと読み込めているので、
一応締め切らせて頂きました。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) Sikulix2.0.5(Jython2.7.3)でcsvを読込WEB検索条件にpasteで文字化け 1 2023/03/31 11:02
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- HTML・CSS htmlについて質問です コードを打ったあと画像が表示されないので調べる svg ファイルが写真のよ 1 2023/07/11 10:53
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- JavaScript gasについて 1 2022/05/31 21:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSで指定行に挿入
-
改行までの一文字ずつのファイ...
-
バイナリファイルをテキストフ...
-
テキストファイルの行数を取得...
-
fgetsで2行目から文字化け
-
ファイル内のデータを1行削除...
-
VC++6でfgets関数の変わりにな...
-
fprintfで出力するファイルのパ...
-
fopenで開いたファイルのサイズ...
-
fgetsの使い方
-
winsock recvでの文字化け
-
C/C++ ファイル入出力操作 (長...
-
C言語 CSVファイルの読み込み
-
webアプリケーションでの画像フ...
-
バッファとは何ですか
-
C言語初心者の質問失礼します。
-
フルパスから最後のディレクト...
-
どんなプログラムを書いても指...
-
FTPでputすると空ファイルが出...
-
Access クエリ実行が急に非常に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内のデータを1行削除...
-
テキストファイルの行数を取得...
-
バイナリファイルをテキストフ...
-
fgetsで2行目から文字化け
-
VBSで指定行に挿入
-
ファイルサイズ指定し、ファイ...
-
c言語 2つのファイルを行ご...
-
freadとfwrite
-
winsock recvでの文字化け
-
【VB.Net】バイト型配列に読み...
-
C言語での改行コードの扱いにつ...
-
fopen(書き込みモード)でファイ...
-
fortranで文字列を読み込む際の...
-
EOF判定されない
-
改行までの一文字ずつのファイ...
-
InternetReadFileで大きいファ...
-
freadでファイルを読み込んだ際...
-
C言語での採番について
-
複数テキストファイルを読み込...
-
C言語 バイナリファイルの読み...
おすすめ情報