die_message() の出力が EUC-JP で固定されているため文字化けする†
- ページ: BugTrack2
- 投稿者: bee
- 優先順位: 低
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2016-10-27 (木) 15:27:39
- バージョン: 1.5.1
- リリース予定バージョン: 1.5.2
メッセージ†
die_message() は 'charset=euc-jp' をハードコーディングしていますが、出力に際して文字コードの変換を行っていないため文字化けが発生することがあります。
案1: charset は LANG 定数を参照する†
UTF-8 版は charset=UTF-8、EUC-JP 版は charset=EUC-JP を出力するようにすれば問題が解消されます。
案2: Shift_JIS に変換して出力する†
die_message() は携帯に対して出力される可能性もある…と認識しています。
ドコモとソフトバンクの機種は UTF-8 にほぼ対応していますが、au には UTF-8 に対応していない機種が存在するため Shift_JIS で出力するほうが安全です。
(2015 年発売の GRATINA2 がおそらくこれに該当します)
案3: US-ASCII 以外出力しないことにする†
US-ASCII の範囲外の文字を置換してしまえば、そもそも charset を出力する必要がなくなります。
- レポートありがとうございます。
現象確認しました。確かに、Skinファイルがない場合などにeuc-jp固定になっていました。
ご提案の中で案1を採用しました。
CONTENT_ENCODINGが定義されていればそれを利用し、そうでなければutf-8にしています osdn.net:projects/pukiwiki/scm/git/pukiwiki/commits/2e8ab06a83b8787316e4300a425120c3088ed25e -- umorigu
- ありがとうございます! -- bee
- (実装案が複数思いついたので実装前に相談したかったんですが、umorigu さんの手のほうが早かったですね…) -- bee
- 選択肢を提示されていたお陰で悩むポイントがなかったので実装してしまいました。案2、utf-8が表示できないブラウザで見ている場合、サイト設定はeuc-jpと推測できます。このため案1の実装でカバーできます。 -- umorigu
- ところでコミットメッセージの BugTrack/2392 は BugTrack2/392 のミスのような…。 -- bee
- 説明がなくてすみません。BugTrackとBugTrack2を統合したいと思っています。先取りしてコミットメッセージのだけそれっぽく変えてしまいました。 -- umorigu
- 了解です。確かに分離していると古いバグを見逃しがちだったりして弊害が大きいですからね…。 -- bee