スレッド表示 | フラット表示〕 全トピック 920 件中 686 番目 次≫ ≪前

文字化けについて

created: 2004-02-05 20:07 | modified: 2004-02-11 02:24 | reply: 10

[1276] 文字化けについて

user: 初心者 | created: 2004-02-05 20:07
他のマシンのファイルを開きたいでお世話になった初心者です。

<HTML><HEAD></HEAD>
<BODY BGCOLOR="WHITE">
<PRE>
 ・
 ・ 半角英数・カタカナのテキスト
 ・
</PRE></BODY></HTML>

上記の様なHTMLファイルに、リンクやジャンプで移動した場合は問題無く表示されるのですが、1行づつ読み込んでechoやprintで表示すると文字化けを起こしてしまいます。
なぜこのような現象が起きるのでしょうか。
何か対策はありますか。
reply: 1277 返信 編集 削除

[1277] こういうことですか?

user: masa | created: 2004-02-05 23:33
PHPファイルの場合に文字化けするってことでしょうか?もしそうならば<?phpの後にheader("Content-Type: text/html;charset=EUC-JP");の文を加えたらほとんど文字化けはしないはずです。もしこういうことでしたらgoogleでphpの文字化けとでも打ち込んで検索したらいくらでもヒットします。人に訊くのも必要ですが自分で調べた方が身につきます。
文字化けの原因はブラウザーがキチンと認識していないせいだと思います。
上記の例はEUC-JPで説明したので違う文字コートを使用する場合はEUC-JPの部分を置き換えてください。
Parent: 1276  reply: 1278 返信 編集 削除

[1278] Re

user: 初心者 | created: 2004-02-06 09:26
masaさんありがとうございます。
phpで、他のhtmlファイルを一行づつ読み込んで表示した場合に起こります。
一応自分で、もprint "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift-JIS\">";
でやってはみたのですが、ダメでした。
よく見ると文字化けというより、メモリ上の内容でページ内の一部が壊されている様な感じです。
リンクやジャンプで移動した場合には、この現象は起きません。
Parent: 1277  reply: 1279 返信 編集 削除

[1279] 僕は勘違いしているのかも

user: masa | created: 2004-02-06 12:44
htmlファイルを展開したいってことでしょうか?<?php
header("Content-Type: text/html;charset=EUC-JP");
print "<a href=\"****.html\">表示</a>\"
?>
それとも別のPHPファイルでそのHTMLファイルの内容を表示したいってことですか?
それならばrequireかincludeで呼び出すこともできますがそういうことでもないですね。
出来たらそのPHPファイルのソースコードを一部でも抜粋してくれたらわかりやすいのですが。
Parent: 1278  reply: 1280 返信 編集 削除

[1280] ソースコードです

user: 初心者 | created: 2004-02-06 13:02
こんな感じです。

while ( !feof($handle) ) {
$buffer = fgets($handle, 1024);
if ( feof($handle) ) continue;

if ( $mode == "TXT" ) {
print $buffer;
continue;
}
// $mode == "PDF"なら、PDFファイルを作成
}
fclose ( $handle );
Parent: 1279  reply: 1281 返信 編集 削除

[1281] こんな文字列が表示されます

user: 初心者 | created: 2004-02-06 13:13
最初や最後の方は、正常に表示しているのですが、突然次の様な文字列が表示さります。


2004`Yり??@C・VICE\TCPIP_{48C0F179-8E28-490D-8FFE-3357DCC54BCF}
$I30<
$I30h
$I30・$I30タ
$I30・$I30 $I30D $I30p $I30・$I30ネ $I30・$I30 $I30L $I30x $I30、 $I30ミ $I30・$I30(
$I30T
$I30?
$I30ャ
$I30リ
$I30$I300$I30\$I30・$I30エ$I30 $I308$I30d$I30・$I30・$I30$I30@$I30l$I30
ワMCまMCゆMCゆMC・掛・wぢエ?K・ィMCィMCィMC?NCあNCおMCxNCエ?
?NCあNCワMC・NC食・0ィMCエ~O?礇Q?タ0?LOC・OC・X掛・Dt?ヲcば_Pf・|OC・OC薫ClOC・ワ、OC
ワ?ま?ゆ?ゆ?・掛タエ?タエ?ヒ。ィ?ィ?ィ???あ?お?x?エ?
??あ?ワ?・?食・0ィ?エ~O?礇Q?タ0?L?[・?[・X掛・D彿q3c・-nf・|?[・?[・[l?[・・、?[う
eF: Fri, 06 Feb 2004 04:06:19 GMT
Server: Oracle HTTP Server Powered by Apache/1.3.12 (Win32) ApacheJServ/1.1 PHP/4.3.4 mod_ssl/2.6.4 OpenSSL/0.9.5a mod_perl/1.24
X-Powered-By: PHP/4.3.4
Connection: close
Content-Type: text/html; charset=Shift_JIS
Parent: 1280  reply: 1282 1283 1284 返信 編集 削除

[1282] うーん

user: masa | created: 2004-02-06 22:26
原因がはっきりわからないです。もしかして最初と最後はちゃんと表示していて途中で表示がおかしくなるのは何故なんだろう?このプログラムはデーターベースは使用してますか?もしそうであればデーターベースと関連ファイルの文字コードの不一致がないでしょうか?もしかして環境側の設定に問題があるかもしれないのでもう一度見なおしたらどうでしょう?
今はそれぐらいしか言うことが出来ないです。
すみません答えになってませんね。
Parent: 1281  返信 編集 削除

[1283] feofのバグ?かも

user: ゆうじ | created: 2004-02-06 23:53
初心者さん、masaさんこんばんは。

この文字化け、バグではないかと思われます。

PHP-Changes の翻訳を公開されている、
ふじもとさんのページにその記載をみつけました。
http://nxweb.dyndns.org/hiki.cgi?PHP-Changes-4.3.5
#25939のバグ修正 (feof()がソケットに対して正しく動作しない) (Wez) 

英語にたけてないので、バグレポート(#25939)を読みきれてませんが、
http://bugs.php.net/bug.php?id=25939
fsockopenと同様にリモートコンピュータ上のファイルも、
ネットワーク経由ということでこれに該当するのでははないかと思われます。
(注:現象を再現できないので推測です)
それでメモリーの一部が間違って読み出されて文字化けのように。


まだPHP4.3.5は正式リリースではないので、
ベータ版にアップデートするか、
Linux系ならば自分でパッチをあてるのが解決策のようです。
Parent: 1281  返信 編集 削除

[1284] Windowsの問題も?

user: シロウ ホームページ | created: 2004-02-07 18:24
@PHP.ringでお世話になっております。
はじめましてシロウと申します。

関係ないかもしれませんが以下のことも検討してみては如何でしょうか?

http://support.microsoft.com/default.aspx?scid=kb;ja;131740

注意:リンクの文字が切れています。

2004`Yり・S…@C・VICE\TCPIP_{48C0F179-8E28-490D-8FFE-3357DCC54BCF}
の部分からがWindowsからのエラーっぽい?
(DEVICE\TCPIP_{……})レジストリで見たこと有ります。

masaさんが言われている様に環境側の設定に問題が有るのかもしれません。

エラー文字列が取得したデータの後ろについてくる様でしたら、ゆうじさんのご指摘の線がかなり強い気がします。
(通信時のヘッダーを表示している?)

// feof()を使わない例
while (true) {
$buffer = fread($handle, 1024);
if (!$buffer) {
break; // whileから抜け出る
}

if ( $mode == "TXT" ) {
print $buffer;
continue;
}
// $mode == "PDF"なら、PDFファイルを作成
} // while (true)

混乱させるようですみません。
Parent: 1281  reply: 1285 返信 編集 削除

[1285] Re.文字化けについて

user: 初心者 | created: 2004-02-09 11:53
皆さん、有難うございます。
複数のクライアントで試してみたところ、XPだとこの現象は、起こらない様です。
PDFファイルは、きれいに出力されるのですが。 なぜなんだろう。
Parent: 1284  reply: 1288 返信 編集 削除

[1288] htmlファイルは・・・

user: hyg | created: 2004-02-11 02:24
実際のhtmlファイルの中身を変えてみても同様でしょうか?最初の書込みで半角英数・カタカナのテキストと書いてありますが、どこまでが表示されてどこのタイミングで表示されなくなってるのかって結構ヒントになるんじゃないですか?改行のタイミングであったりXPにしかない機種依存文字(そんなものあるのか知りませんが)とか。
Parent: 1285  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 686 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑