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

日本語入力について

created: 2003-11-07 12:31 | modified: 2003-11-10 15:12 | reply: 8

[904] 日本語入力について

user: コースケ | created: 2003-11-07 12:31
はじめまして。ド初心者ですが、よろしくお願いします。
Windows2000+Apache1.3.28+PHP4.3.3を使用しています。
簡単な掲示板を作ろうと、本を買ってきてそのテキストどおりに作成したところ、半角英数文字で投稿すると反映されるのですが、日本語で入力すると反映されません。(ただのブランクが表示されています)
ちなみにApacheとPHPの初期設定はコチラのHPにも記載されているとおりに行っています。
なにがいけないのでしょうか。
reply: 905 返信 編集 削除

[905] ブラウザのエンコードは?

user: ゆうじ | created: 2003-11-07 12:49
こんにちは。
投稿はされてるけど、日本語の文字だけが
ブランクで表示されてるということでしょうか。

ブラウザが文字エンコードを誤認識してるように思うのですが。
IEをお使いならば、
エンコードを日本語(自動選択)にすると直ったりしませんか。

直らなければ、
PHPが実際出力している文字コードや
metaタグに記述するcharsetなどの記述が一致しているか、
確認してみてください。


追記:
ブラウザの誤認識でなければ、
表示されてるHTMLのソースを確認して
実際ブランク部分には何が出力されてるのか
見てみるとわかるかも。
Parent: 904  reply: 906 返信 編集 削除

[906] Re.ブラウザのエンコードは?

user: コースケ | created: 2003-11-07 14:08
早速のご返事ありがとうございます。

ブラウザのエンコードですが、(IEを使用)
「日本語(自動選択)」にすると頭に●(黒丸)がつきますよね。ところが「日本語(シフトJIS)」から●が移動しないんです。
「日本語(EUC)」は選択できますが、今度はすべて文字化けしてしまいます。でもこの状態では、日本語が反映されるんです。

> 直らなければ、
> PHPが実際出力している文字コードや
> metaタグに記述するcharsetなどの記述が一致しているか、
> 確認してみてください。

すいません。この部分の方法がわかりません。
何度もすいませんが、よろしくお願いします。
Parent: 905  reply: 907 911 返信 編集 削除

[907] 私の誤認識でした。

user: ゆうじ | created: 2003-11-07 16:10
●印は、選択しているエンコードに対して付くものだと思いますので、
自動選択を選んで Shift-JIS のままでしたら、
ブラウザが、Shift-JIS だと判断しているのでしょう。

単純にブラウザの誤認識ではないようです。
失礼しました。


改めて文字化けとして原因を考え直してみます。
初期設定は当サイトに掲載してあるものと同じ
http://www.sound-uz.jp/php/note/config4
ということであれば、
違うと思われる、次の3件お知らせ下さい。

1.PHPスクリプトの文字コード。

2.metaタグに記述するcharset(↓これのことです。)
  <meta http-equiv=\"content-type\" content=\"text/html;charset=Shift_JIS\">

3.スクリプト内で mb関連関数を使っているか。
  使っていればそのコードも。


※無駄かもしれないのですが、
ブラウザのエンコードをUTF-8にすると、
部分的に直ったりしませんか。
申し訳ありませんが一度試していただけますか。
Parent: 906  reply: 914 返信 編集 削除

[914] こんな感じです

user: コースケ | created: 2003-11-07 18:42
ご質問の件です。

1.EUCです。

2.<META http-equiv=Content-Type content="text/html; charset=shift_jis">
となってます。

3.for ( $i = 0; $i < sizeof( $data ); $i++ ) {
$data[ $i ] = mb_convert_encoding( $data[ $i ], $encoding, $s_encoding);

これでいいんでしょうか。
すいません。ご質問の答えになっていなければ、またご指摘ください。

あと、エンコードをUTF-8にしても直りませんでした。

ちなみに、掲示板用データはCSVで保存してあります。
Parent: 907  reply: 916 921 返信 編集 削除

[916] php.iniの編集が必要です

user: ゆうじ | created: 2003-11-07 19:39
お知らせいただいた内容で充分わかりますよ。

私のmb関係の設定は、
借りてるレンタルサーバーの設定にあわせて
全てデフォルトのままにしています。

なので、
mb関連関数を使用するは、スクリプトのはじめで ini_set で設定したり、
常に文字コードを意識してスクリプトを書く必要があります。

スクリプト内で、mb_convert_encoding などの関数を使う場合や、
スクリプトの文字コードと出力される文字コードが異なる場合などは、
デフォルト設定のままでは間違いなく化けます。


PHPスクリプト = EUC
出力される文字コード = SJIS

以上を踏まえ、一般的とだ思われる設定例をお知らせしますので、
php.ini を編集してください。その後サーバーを再起動させ、
もう一度試してみてください。

↓94行目あたり
output_buffering = On

↓106行目あたり
output_handler = mb_output_handler

↓1037行目あたりから
[mbstring]
; language for internal character representation.
mbstring.language = Japanese

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
mbstring.internal_encoding = EUC-JP

; http input encoding.
mbstring.http_input = auto

; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = SJIS

; enable automatic encoding translation accoding to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
mbstring.encoding_translation = On

; automatic encoding detection order.
; auto means
mbstring.detect_order = auto

; substitute_character used when character cannot be converted
; one from another
mbstring.substitute_character = none;

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 0
Parent: 914  返信 編集 削除

[921] Re.こんな感じです

user: deburi | created: 2003-11-08 07:36
横から口を挟んですみません。

> 2.<META http-equiv=Content-Type content="text/html; charset=shift_jis">
> となってます。

ここの charset=shift_jis の部分を charset=EUC-JP に直せば表示できますよ。
スクリプトで書き出すデータと、htmlで使う文字コードの不整合でこのような現象がおきます。運用する場所サーバがwindowsならshift_jis、UNIX ならEUCに統一しないといけないようです。
Parent: 914  reply: 955 返信 編集 削除

[955] ありがとうございました。

user: コースケ | created: 2003-11-10 15:12
ゆうじ様、deburi様
土日を挟んだためにご返事おそくなりました。
おかげさまで表示できるようになりました。
本当にありがとうございました。
だんだんPHPの楽しさがわかってきたような気がします。
でも、まだまだ初心者。壁にぶち当たってしまうと思いますので、そのときはまたよろしくお願いします。
Parent: 921  返信 編集 削除

[911] ゆうじさんに一票

user: deburi | created: 2003-11-07 17:31
打ち込んだ掲示板のサンプルスクリプトを見てみてください。
データをEUCで書き出したりしてませんか?

読み込んだ掲示板用のデータがEUCだったりすると、こんな現象がおこります。
Parent: 906  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 751 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

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