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

文字化けについて

created: 2004-04-01 18:07 | modified: 2004-04-03 08:29 | reply: 4

[1469] 文字化けについて

user: 奈央 | created: 2004-04-01 18:07
ブラウザからデータを入力して、PostgreSQLに格納させているのですが、
PostgreSQLでデータを確認してみると、文字化けを起こしています。
ブラウザ上で登録データを表示させたものは化けてないです。
また、ソース上に<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">と記入しています。
どのようにして対処していけばよいですか?
【環境】
WindowsXP
Cygwin1.5.9-1
php-4.3.4
PostgreSQL 7.4.1-3
apache_1.3.29
【php.iniの設定】
output_buffering = On
output_handler = mb_output_handler
magic_quotes_gpc = Off
default_charset = "Shift_JIS"
extension_dir = C:/php/extensions
extension=php_mbstring.dll
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
reply: 1473 返信 編集 削除

[1473] PostgreSQLの文字コード?

user: ゆうじ | created: 2004-04-02 01:24
こんばんは。

まずはこれと、
> mbstring.http_output = SJIS
これっ、
> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
て、ちぐはぐになってませんか。
ブラウザで文字化けしないのは
ブラウザがcharset=EUC-JPを無視して
Shift_JISで表示させてるからだと思われます。



php.iniの設定によると、
現在こんな状態になっていると思われます。
1.フォームから送られて来たテキストは、自動判別で、内部コード(EUC-JP)に変換。
  また、PHPのソースファイルも、EUC-JPのはず。
  > mbstring.detect_order = auto
  > mbstring.internal_encoding = EUC-JP
 
2.DBに保存する際も内部コード(EUC-JP)のまま。 
 
3.PostgreSQL の文字コードは、不明。
 
4.出力の際は、内部コード(EUC-JP)から SJISに変換。
  METAのcharsetの記述もShift_JISの必要アリ。
  > output_buffering = On
  > output_handler = mb_output_handler
  > mbstring.encoding_translation = On
  > mbstring.http_output = SJIS
これで、ある時点での文字コードは何か把握してくださいね。
charset=EUC-JP以外にも、どこか現状と違うところがあるはずです。



> PostgreSQLでデータを確認してみると、文字化けを起こしています。

これをどのようにして確かめたかわかりませんが、
PostgreSQLの文字コードと、
mbstring.internal_encoding = EUC-JP
これとが一致してないのが文字化けの根本原因だと思われます。
DBに保存する際に、mb_convert_encoding で
PostgreSQLの文字コードに変換してあげる必要があるのではないでしょうか。
Parent: 1469  reply: 1477 1480 返信 編集 削除

[1477] 文字化けについて

user: 奈央 | created: 2004-04-02 17:05
ご回答ありがとうございます。

>PostgreSQL の文字コードは、不明。
EUC-JPです。
Name | Owner | Encoding
---------+---------+---------
testdb| postgres| EUC-JP
>PostgreSQLでの文字化けをどのようにして確かめたかわかりませんが
Cygwinのコマンドラインから、「$select * from test;」で表示させてみると文字化けが確認できました。

mbstring.http_output = EUC-JPとしました。
これで、DBに保存する際の内部コードとPostgreSQL の文字コードがEUC-JPで一致したの
ですが、$select * from test;で表示させてみると文字化けが起きております。
ブラウザ上でのデータは文字化けはしていません。

ご教授の程お願いできませんか?
Parent: 1473  reply: 1478 返信 編集 削除

[1478] EUC_JPを表示できる?

user: ゆうじ | created: 2004-04-02 18:24
"Cygwin" "文字化け"ってgoogleってみると
このような記事を発見しました。

http://discypus.jp/pukiwiki/pukiwiki.php?Cygwin%2FPostgreSQL#content_1_39

Windowsのコンソールは、
EUC_JPを表示できないということのようですが、
私のところには、PostgreSQL + Cygwin の環境がないので、
確かめていただけますか。
Parent: 1477  返信 編集 削除

[1480] PHPの問題なのかわかりませんが

user: 初心者 | created: 2004-04-03 08:29
PHPの問題なのかわかりませんが、Mysqlの実行結果をfputsでファイルに書き出そうとすると、
Failed to read headers to server:
200.75.20.8 (80)
Reason: Headers were invalid or incomplete
の様なエラーが出る場合があります。(出ないこともあります)

OS XP(Apache)
Mysql M:\Mysql
PHPファイル N:\WebTest\php
fputs出力先 N:\WebData\Temp

こんな感じなのですが、よろしくお願いします。
Parent: 1473  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 645 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

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