現在、携帯サイトの構築を行っています。
EUC-JPならば問題なく表示されるのですが携帯電話はShift-JISをサポート。
一応、EUC-JPも表示はされますがサポート外である事実は変わりません。
そこで、表示に関してはShift-JISで行いと考えています。
(全ての携帯がEUC-JPでも問題なく表示できる確証がない限り表示はShift-JISを考えています。)
しかし、今度はSmartyがShift-JISがサポート外。
普通にShift-JISを使うと文字化けを起こしたりエラーが表示されます。
PHPもShift-JIS、SmartyのテンプレートもShift-JISにすれば
とりあえずはPHPからの表示する文字に関してはShift-JIS表示できますが
Smartyテンプレートに直接書いた文字は文字化けを起こします。
自分なりに調べて
http://blog.livedoor.jp/alpha1280/archives/50225 …
http://www.knym.net/wiki/index.php?PHP%2FSmarty
のサイトを見つけて記事内に書いてあるPHPを利用してみました。
Smarty_Extends.phpをSmarty.class.phpと同じフォルダに作成して
テンプレートをShift-JISで作成、プレフィルタとポストフィルタのコメントを外して
Smarty_Extendsを利用して表示するPHPを作成↓
<?php
include_once('Smarty_Extends.php');
$smarty = new Smarty_Extends('templates','templates_c');
$smarty->assign("test", "Shift-JISによる表示だよ。必須");
$smarty->display("Enc_Shift-JIS.tpl");
?>
エラーは出なかったんですが従来通り文字化け、何度もテストしているんですが判りません。
SmartyでShift-JIS表示の経験がある方、上記の問題点や解決作の判る方。
お力を頂ければ幸いです、宜しくお願い致しますm(_ _)m
No.2ベストアンサー
- 回答日時:
自分も同じように携帯サイトを作成する時にSmartyを使用しました。
丁度ag_noiseさんと同じようにShift-JISによる出力を調べて行っていましたよ☆
やはり行き着くサイトは皆同じ?私も上記二つのサイトは参考にしました。
そこで自分的な考えを少し述べると。。。
根本的にサイトに書いてある事とag_noiseさんがしたい事は全く別物だと思います(´・ω・`)
ag_noiseさんが書いたURLのサイトはSmartyのテンプレートをShift-JISで記述するためのもの、
ag_noiseさんのした事はShift-JISで出力。
似て非なるものなんじゃないかな?って思います(ノ∀`)
結論から言うと私が実践して成功した方法はアウトプットフィルタの使用です、
SmartyもPHPもEUCで作成、出力時のみShfit-JISに文字列を変換ってな感じですね!
「Smartyに書いた文字も成功するのか!」っと思うかもしれませんが成功しちゃいました。
//★アウトプットフィルタ用関数、Smarty出力時にEUCからShift-JISに変換する。
function SJIS_Encoding($tpl_output, &$smarty){
$tpl_output = mb_convert_encoding($tpl_output,'SJIS','EUC-JP');
return $tpl_output;
}
//呼び出し方:EUCからSJISへ変換出力
$smarty->register_outputfilter("SJIS_Encoding");
これで問題無くShift-JIS出力ができました。
まだあまり確認していないのですが(^^ゞ
環境に合わせてfire--さんのような処理をした方がいいかな?
もしかしたら失敗するかもしれませんが一応成功したって事で報告します。
携帯サイトは意外に製作が大変、EZgetやCRCチェックサムなどマジで面倒(´Д⊂グスン
その分色々考えたりして面白かったけどねヽ(゜∀゜)ノ
大変だと思いますが頑張って下さい(^-^)b
xeno-fieldさんの方法で成功しました、
まだ色々試してみますが問題なさそうです。
コードも載せて頂いてありがとうございます。
これで問題なくできそうです!
ありがとうございました。
No.1
- 回答日時:
こちらも携帯向けのページを見直し中です。
smartyを使っていませんが、以下のようにして
出力をsjisにしてます。
smartyはphpの一部として動くので、うまく行く可能性が
あるのではないかと思います。
出力開始の前に以下の1行を入れるだけです。
ini_set('mbstring.http_output','SJIS');
この回答への補足
遅くなってごめんなさい、色々試してました。
ini_set('mbstring.http_output','SJIS');
ですがやはりSmartyとは考え方が違いますね、
Smartyに値を渡す時はEUCで、Smarty自身もEUCが基本。
Shift-JISなどで利用する場合はプレフィルタで変換してからテンプレートを使用、
最終的にポストフィルタを使いもう一度元のエンコードに戻す事からも
ini_set('mbstring.http_output','SJIS');だけでは無理かと。。。
PHPのみの出力なら簡単なんですがSmartyは奥が深い、
いやはや、やり甲斐があると言うか面倒と言うか。。。
回答して下さりありがとう御座いますm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Java VScodeのターミナルの文字化けについて 1 2022/09/27 22:19
- その他(ビジネス・キャリア) JISの表記について 1 2023/07/06 14:35
- その他(IT・Webサービス) 電気ガスの手続きで文字を入力したいのですが、入力したい文字がアルファベットなんです。ですが、文字がJ 1 2023/05/14 18:00
- その他(プログラミング・Web制作) sedの動作 2 2022/10/10 13:38
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- iOS これは日本語入力の大発明ですか? 7 2022/12/21 07:17
- Word(ワード) ワードのコメント内の文字を、下付けにする方法 2 2023/08/09 11:30
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- その他(プログラミング・Web制作) Linuxについて質問です。 引数に指定されたアクセスログのファイルからアクセス数が多い順に上位3つ 1 2023/02/03 03:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでデータベースからデータを...
-
PHPSpreadsheetによる書き出し...
-
PHPで動的に生成した画像がキャ...
-
JSON_UNESCAPED_UNICODEをつけ...
-
CSV出力にHTMLが入ってしまう
-
PHP header関数が使えない
-
phpでPEAR::DBを使っているので...
-
onedrive にexcelファイルをア...
-
index.phpって何ですか? 具体...
-
index.phpに入るには、どうすれ...
-
PHP8を使うと、大量のWarningが...
-
トランザクションが原因?DBに...
-
エックスサーバーでのmysql設定...
-
パースエラーとは?
-
フォントの色を変えるには?
-
ImageCreate関数が undefined f...
-
入力フォームの空白や改行を制...
-
別ファイルの変数を呼び出した...
-
php5-extensions を make でき...
-
★PHP?★画像を縦横比を変えずに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSV出力にHTMLが入ってしまう
-
PHPSpreadsheetによる書き出し...
-
文字列を段落で分ける方法を教...
-
phpにcssを適応させたい...
-
エクスプローラーでフォルダを...
-
TCPDFについて
-
PHPで取得したHTML内のdiv要素...
-
ob_end_clean と ob_clean の違...
-
JSON_UNESCAPED_UNICODEをつけ...
-
リダイレクト元のURLの取得方法...
-
phpexcelにてsubmitボタンを押...
-
phpで不思議な現象が起きるので...
-
変数名の前後に文字列を追加す...
-
PHPで`headers already sent`と...
-
phpでmysqlから画像パスを出力する
-
print出力での文字制限について
-
smarty foreach 半角スペース
-
imgタグでのphpの呼び出しについて
-
PHP/phpMyAdmin/データベースな...
-
【smarty】<A href="">内でのみ...
おすすめ情報