日本語がうまく読み込めない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dic

日本語がうまく読み込めない

#1

投稿記事 by dic » 15年前

日本語のテキストをfgets関数で取得しようとしてるのですが
なぜか、文字化けが発生してしまいます
原因は何でしょうか?
#include	<stdio.h>
#include	<vector>
using namespace std;


static	vector<char>	v;


void	load()
{
	FILE	*file = fopen( "iGoogle.txt", "rb" );
	char	buf[256];
	while( !feof(file) )
	{
		//	文字化けして取得している
		fgets( buf, sizeof(buf), file );
		printf( buf );
	}
	fclose( file );
}

int		main()
{
	load();

	return 0;
}

Naohiro19

Re:日本語がうまく読み込めない

#2

投稿記事 by Naohiro19 » 15年前

charだと1バイトしか読み込めないので
2バイト対応であるwchar_tを使ってみてはどうでしょうか?
static	vector<char>	v;
static	vector<wchar_t>	v;

Justy

Re:日本語がうまく読み込めない

#3

投稿記事 by Justy » 15年前


>原因は何でしょうか?

 文字コードの問題ではないでしょうか。
 テキストの文字コードを(多分 Shift-JISに)変えて保存しなおすか、
読み込んだ後適切に変換してから表示してみてください。

YuO

Re:日本語がうまく読み込めない

#4

投稿記事 by YuO » 15年前

確認時にJustyさんとかぶったことがわかりましたが,気にせず投稿します。


"iGoogle.txt"の文字コードは何ですか。
なんとなく,UTF-8のにおいがしています。

日本語版Windowsのコマンドプロンプトの既定のコードページは932なので,
標準C/C++の範囲の標準出力では,シフトJISの文字列しか出力できません。

文字コードがシフトJISでないならば,
・前もって文字コードを変換しておく
・プログラムで文字コードを変換する
・コマンドプロンプトのコードページを変更しておく (UTF-8なら65001)にする
などの手段をとる必要があります。

dic

Re:日本語がうまく読み込めない

#5

投稿記事 by dic » 15年前

返答ありがとうございます
文字コードですが、windows付属のメモ帳でひらけるので
Sift-JISで保存できてるはずだと思うのですが

文字コードの確認方法がわからないので
iGoogle.txtを送付してみます

dic

Re:日本語がうまく読み込めない

#6

投稿記事 by dic » 15年前

自分で確認しましたが、SHift-JISだとIEだと文字化け起こしますね
UTF-8だと日本語が意図どおりに表示されました

XP付属のメモ帳ですが、UTF-8でも表示できたんですね

Justyさん YuOさんの言うとおり原因は文字コードでした

Naohiro19さんの言うとおり2バイト対応で考えていきます

閉鎖

“C言語何でも質問掲示板” へ戻る