• 締切済み

softbank(UTF-8)での機種依存文字について

携帯サイトを作っているのですが、softbankだけcharsetをUTF-8にしています。そのため、JISコード13区の機種依存文字が?になってしまいます。入力された文字列が?になって次の画面に渡ってきてしまうので、(1)などに変換することすらできません。 この場合、どのようにすればよろしいのでしょうか。 環境はDebian4.0,Apache2.2.3,PHP5.2.0です。どんな小さな情報でも構わないので、情報提供をお願いいたします!

みんなの回答

  • kinta03
  • ベストアンサー率41% (7/17)
回答No.1

始めまして。 貴方の次に質問を投稿している「kinta03」と申します。 違うのかも知れませんが「ひょっとして凄く近い質問内容」では? と、思い回答しています。 まずは私の行いたい事を箇条書きします。 ・基本はPC/携帯からのフォーム入力でCharasetをSJISとしたい。 ・携帯各キャリアの絵文字の入力を「排除(置換え)」したい。 ・入力文字の変換不能文字を抽出して「排除(置換え)」をしたい。 ・上記理由はPC/携帯の両方から受け付けるので内部処理上  「絵文字/変換不能文字」まで対応したくない。 私の行っている設定を記述します。 ・「.htaccess」では次の記述をしています。   default_charset "Shift_JIS"   mbstring.http_input "ASCII,SJIS-win"   mbstring.internal_encoding "eucJP-win"   mbstring.http_output "SJIS-win"   mbstring.substitute_character "long" ・入力の流れは次のようになります。   入力は、SJIS-win   内部処理は、eucJP-win   出力は、SJIS-win   変換不能文字は、「W932+xxxx("long"指定)」を「排除(置換え)」   絵文字は、eucJP-winのコード範囲をmb_ereg(_replace)する   sb絵文字は、'[\x1B]{1}[$]{1}[GEFOPQ]{1}[\x5C]*[!-z]{1}[\x0F]{1}'でmb_ereg(_replace)する ってな事をやっています。 多分、貴方の設定は   mbstring.substitute_character "long" 又は   mb_substitute_character("long")が設定されていないのでは?   デフォルトでは「none」になっているか「no value」ではありませんか? 「none」の場合「?」に成らずnull文字になるはずですが「no value」と同様に「?」に変換されてしまうことがほとんどのようです(現時点での実験の範囲内では)。 「long」にして変換不能文字を積極的に処理したほうが良いみたいです。 特に、「internal_encoding」が何か分かりませんが default_charsetとかhttp_inputに指定しているコードページの様に 間口が広い物で受け取っていますか?間口が広ければ変換不能になることは ほとんど在りません(多分?)。つまり、   入口>>内部<<出口  とか   入口>>内部>>出口 だと変換不能が必ず発生します。 以前の私は、   mbstring.http_input "ASCII,SJIS"   mbstring.internal_encoding "EUC-JP"   mbstring.http_output "SJIS" で良いや!!などとしていて 実際の入力が「SJIS-win」の範囲で入ってくるものでボロボロに成っていました。 以上、私の勝手な意見です。 お気に触ったらご免なさい。 オブザーバの皆さん。間違いが有ると思います。 フォロー宜しくお願いします。

関連するQ&A