投稿者 メッセージ
<  サーバ、データベース関連の話題  ~  strlenなどに関して
hideyo
投稿1時間: 金 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にしています

ごちゃごちゃしてますが、よろしくお願いします
長文になり失礼しました。
トップに移動
ユーザー情報を表示 メッセージを送信 メールを送信
しもやん
投稿1時間: 金 6月 09, 2006 11:18 am  引用



登録日: 2006年3月 23日
投稿記事: 48

SJISで保存してるなら
mbstring.internal_encoding=SJIS
にします
トップに移動
ユーザー情報を表示 メッセージを送信
hideyo
投稿1時間: 金 6月 09, 2006 3:41 pm  引用



登録日: 2006年6月 09日
投稿記事: 10

変更して念のため再起動してからやってみたら
mb_strlen("あいab","C");
としていたPHPの間違いは出ましたが
他の???と出る部分や文字が
正しく数えられないのはそのままでした。
トップに移動
ユーザー情報を表示 メッセージを送信 メールを送信
しもやん
投稿1時間: 金 6月 09, 2006 4:54 pm  引用



登録日: 2006年3月 23日
投稿記事: 48

内部エンコーディングがちゃんとなってるかmb_internal_encodingとかで確認しましょう
トップに移動
ユーザー情報を表示 メッセージを送信
hideyo
投稿1時間: 金 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
トップに移動
ユーザー情報を表示 メッセージを送信 メールを送信
しもやん
投稿1時間: 金 6月 09, 2006 5:54 pm  引用



登録日: 2006年3月 23日
投稿記事: 48

mb_internal_encoding("sjis");しる
トップに移動
ユーザー情報を表示 メッセージを送信
hideyo
投稿1時間: 金 6月 09, 2006 6:08 pm  引用



登録日: 2006年6月 09日
投稿記事: 10

あ、できました。
もしかしたら
mb_internal_encoding("sjis");
を毎回<?php ?>の中に入れなきゃできないんですか?
買ってきたphp5の本にはそういった事は全くかかれてなかったんですが・・。
トップに移動
ユーザー情報を表示 メッセージを送信 メールを送信
hideyo
投稿1時間: 月 6月 12, 2006 12:39 pm  引用



登録日: 2006年6月 09日
投稿記事: 10

全て解決しました。
お忙しい中、お時間を割いて丁寧に教えて
いただきありがとうございました
また、今後ともよろしくお願いします
トップに移動
ユーザー情報を表示 メッセージを送信 メールを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  サーバ、データベース関連の話題

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.