- PR -

リットルの表示について教えて下さい

投稿者投稿内容
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-11-22 20:34
引用:

甕星さんの書き込み (2005-11-22 20:22) より:
ShiftJISに存在しない文字を表示するためには、ShiftJISを使うのをやめ、表示したい文字をサポートしている文字コード体系を使う以外にないと思うけど。つまるところ、デフォルトで採用されているUnicodeを使っておきなさい。

文字の変わりに画像を表示する対処方法もあると思うけど、あまり現実的とは思えないしね。


文字実体参照や数値文字参照だったっけ?を使う場合はどうなりましたっけ?
※そのドキュメントのエンコードに依存しましたっけ?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-22 21:28
引用:

かもっちさんの書き込み(2005-11-22 13:35)より:

皆様は、シフトJISに存在しない文字をブラウザ上に表示させる際、どのように処理されてますでしょうか。


 みっけ。フォントが、JustUnitMark で、U+F08D ですね。機種というか、インストールされているプロダクト依存ですね。使わないようにしましょう。もしかして、PC-9801 シリーズからの移行ですか?


 見る人のところに JustUnitMark フォントがインストールされているという前提で、UTF-8 を指定しておいて、
<span style="font-family: JustUnitMark">&#141;</span>
___________________________________________________________________
□ written by Jitta on 2005/11/22
□ Microsoft MVP for Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-11-23 13:41
引用:
今”&#8467;(リットル)”という文字を入力しても正しく表示されず、困っております。
まず、HtmlTextAreaに”&#8467;(リットル)”を入力し、ポストバック処理を走らせた際、
画面上に”&#8467;(リットル)”ではなく、"&#8467;"と表示されました。
デバッグしてみると、HtmlTextAreaの値は"&#8467;"と入っていました。
HtmlInputTextで試してみたところ、デバッグしてみるとHtmlTextAreaの値は"&#8467;"と入っていました。

入力された[リットル文字]が変わってしまうということですよね、とりあえず[リットル文字]が
見られない環境については考えないことにします。[リットル文字]を数値文字参照(&#8467;)に
変換してるのはブラウザのようです。シフトJISで表示されたページで、シフトJISで定義
されていない文字が入力されたとき数値文字参照に変換して送信します(IEでは<meta>タグでの
エンコーディング指定がないとまた違う動きをするようです)。これを解決するにはページの
エンコーディングをutf-8などにすればよいと思います。

#この掲示板でも何かが起きてるし・・

"&#8467;"を"&amp;#8467;"に変換しているのはサーバー側ですね。HtmlTextAreaの場合入力
された値をHtmlEncodeするようです。ここで&が"&amp;"に変換されるんですね。これは&のみを
入力しても確認できます(LabelでなくTextBox等に表示したほうがわかりやすい)。これは
エンコーディングをutf-8にしても起こります。設定で回避する方法は知りません・・。HtmlDecodeすれば
元に戻りますがそれによって起こる危険を意識する必要があります。またWebControlのTextBoxを
Multilineにしたtextareaの場合はHtmlEncodeされないようです。
Request["(HtmlTextAreaのname)"]のようにして拾った場合もHtmlEncodeされません。

私だったらこの2つをやるかなぁ
・エンコーディングをutf-8にする
・HtmlTextAreaを使用しない

# "&amp;"が"&"に見えてたので&を大文字にしました。

[ メッセージ編集済み 編集者: べる 編集日時 2005-11-24 00:38 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-23 16:40
ごめんなさい。これって、「表示」の問題ではなく、「入力」の問題ですか?
___________________________________________________________________
□ written by Jitta on 2005/11/23
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-11-25 01:05
引用:
今”&#8467;(リットル)”という文字を入力しても正しく表示されず、困っております。
まず、HtmlTextAreaに”&#8467;(リットル)”を入力し、ポストバック処理を走らせた際、
画面上に”&#8467;(リットル)”ではなく、"&#8467;"と表示されました。

最初は「入力値をそのまま表示してるはずなのに変わる」問題だったんでしょうかね。
(私は主にこれについて答えたつもりでした。)

後に
引用:
皆様は、シフトJISに存在しない文字をブラウザ上に表示させる際、どのように処理されてますでしょうか。

表示の問題になったんですかね。これに素直に答えるなら
(Jittaさんがおっしゃる、プロダクト依存するよ、という話をクリアしたとして、)
・その文字が存在するエンコーディングを使う
・文字実体参照や数値文字参照を使う
でしょうかね。

#「参照元記事」に気づいていませんでした(どう関係していたんだろう)

[ メッセージ編集済み 編集者: べる 編集日時 2005-11-25 01:06 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-25 06:35
引用:

べるさんの書き込み (2005-11-25 01:05) より:

(Jittaさんがおっしゃる、プロダクト依存するよ、という話をクリアしたとして、)
・その文字が存在するエンコーディングを使う
・文字実体参照や数値文字参照を使う
でしょうかね。


あ!ごめんなさい、"8476"を16進でコード表を探すというポカをしていました!!
&#8476 自体は、「"l"の筆記体」で、登録されていました。

で、ページのキャラクタセットを、Shift-JIS と、UTF-8 両方で、&#8476 を表示させると、どちらでも「"l"の筆記体」が表示されました。

なので、「表示ではなく、HtmlTextArea での入力の問題?」
___________________________________________________________________
□ written by Jitta on 2005/11/25
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-25 08:53
引用:

Jittaさんの書き込み (2005-11-25 06:35) より:

なので、「表示ではなく、HtmlTextArea での入力の問題?」


え? 当初からそういう問題という流れじゃなかったでしたっけ?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)