投稿者 |
メッセージ |
|
< サーバ、データベース関連の話題 ~ strlenなどに関して |
|
時間:
金 6月 09, 2006 12:45 am
|
|
|
登録日: 2006年6月 09日
投稿記事: 10
|
|
初めてになります。
PHPについては始めたばかりで全くの初心者です。
<?php $str = mb_convert_kana("あいうえお","C");echo "$str";?>
とすると
????? と出力されてしまいます。(長くなるので以下<?php・・ 省略)
また、
echo strlen("gikld");
とすると、 5と出るのですが
echo mb_strlen("あいabc");
とすると、6。また、
echo strlen("あいabc");
としても6とでます。
<?php
echo "実行結果=".mb_strlen("あいabc","EUC-JP");
?>
とした時、それぞれ試したところ
ENC-JPは
PCがechoの行のエラー表示で
レンタルしているサーバーが 実行結果=
でした
Unicodeは
PC レンタルサーバー ともに
実行結果=3
でした
UTF-8は
PC レンタルサーバー ともに
実行結果=7
(レンタルサーバーはPHP対応)
ちなみに php.ini の
mbstring.func_overload = 0
0を 7 変更しても出力される内容が変わりません。
後、
mbstring.http_input
auto
mbstring.http_output
SJIS
mbstring.internal_encoding
EUC-JP
にしてあります。
エディタはこちらのPHPエディタを使わせていただき
言語はSHIFT-JISにしています
ごちゃごちゃしてますが、よろしくお願いします
長文になり失礼しました。 |
|
|
|
|
|
 |
|
時間:
金 6月 09, 2006 11:18 am
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
SJISで保存してるなら
mbstring.internal_encoding=SJIS
にします |
|
|
|
|
|
 |
|
時間:
金 6月 09, 2006 3:41 pm
|
|
|
登録日: 2006年6月 09日
投稿記事: 10
|
|
変更して念のため再起動してからやってみたら
mb_strlen("あいab","C");
としていたPHPの間違いは出ましたが
他の???と出る部分や文字が
正しく数えられないのはそのままでした。 |
|
|
|
|
|
 |
|
時間:
金 6月 09, 2006 4:54 pm
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
内部エンコーディングがちゃんとなってるかmb_internal_encodingとかで確認しましょう |
|
|
|
|
|
 |
|
時間:
金 6月 09, 2006 5:23 pm
|
|
|
登録日: 2006年6月 09日
投稿記事: 10
|
|
すみません。本当に初心者なのでよくわかりません。
確かに
echo mb_internal_encoding();
をすると まだENC−JPになっています。
後、どこをなおしたら正常になるか見ても全くわからないので
下で変な部分ありましたら教えていただけませんか?
(php.iniの内部です。)
[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 = SJS
; 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 according 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 = Off
; 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 = 7
; enable strict encoding detection.
;mbstring.strict_encoding = Off |
|
|
|
|
|
 |
|
時間:
金 6月 09, 2006 5:54 pm
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
mb_internal_encoding("sjis");しる |
|
|
|
|
|
 |
|
時間:
金 6月 09, 2006 6:08 pm
|
|
|
登録日: 2006年6月 09日
投稿記事: 10
|
|
あ、できました。
もしかしたら
mb_internal_encoding("sjis");
を毎回<?php ?>の中に入れなきゃできないんですか?
買ってきたphp5の本にはそういった事は全くかかれてなかったんですが・・。 |
|
|
|
|
|
 |
|
時間:
月 6月 12, 2006 12:39 pm
|
|
|
登録日: 2006年6月 09日
投稿記事: 10
|
|
全て解決しました。
お忙しい中、お時間を割いて丁寧に教えて
いただきありがとうございました
また、今後ともよろしくお願いします |
|
|
|
|
|
 |
|