@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

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

投稿者投稿内容
かもっち
会議室デビュー日: 2005/11/21
投稿数: 3
投稿日時: 2005-11-21 20:01
初めて投稿させて頂きます。

--------------------------------------------------------------------------
開発環境  :ASP.NET(.NET Framework SDK v1.1)エディタで開発(C#)
データベース:Oracle9.2.0.1.0

●web.configの<globalization>は全てshift-jisを指定しております。
<globalization
  requestEncoding="shift-jis"
  responseEncoding="shift-jis"
/>

●web.configの<pages>は以下の通り設定しております。
<pages
  validateRequest="false"
/>

●各.aspxファイルの<META>タグのcharsetにはShift_JISを指定しております。
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">

--------------------------------------------------------------------------

上記の環境にて、Webシステムを開発しております。
今”&#8467;(リットル)”という文字を入力しても正しく表示されず、困っております。
まず、HtmlTextAreaに”&#8467;(リットル)”を入力し、ポストバック処理を走らせた際、
画面上に”&#8467;(リットル)”ではなく、"&#8467;"と表示されました。
デバッグしてみると、HtmlTextAreaの値は"&amp;#8467;"と入っていました。
HtmlInputTextで試してみたところ、デバッグしてみるとHtmlTextAreaの値は"&#8467;"と入っていました。

そこで、以下の2点につきましてどなたか教えて頂けないでしょうか。
 ・HtmlTextAreaとHtmlInputTextでなぜ中身の値が異なるのか
 ・プログラム側ではなく、環境の設定で問題解消できないか

皆様お忙しい所申し訳ありませんが、どうかよろしくお願い致します。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-11-21 23:22
リットルってgですよね?少なくとも単純にポストバックを行う限り、おっしゃっているような現象は確認されません。

おそらくあなたの記述した文字列処理に、HTML文字のサニタイジングに関する処理に、何か問題があるんでしょうね。
かもっち
会議室デビュー日: 2005/11/21
投稿数: 3
投稿日時: 2005-11-22 09:42
甕星様
早々のご返答ありがとうございます。

お恥ずかしいのですが、知識が乏しい為「サニタイジング」について調べました。
HTML上での危険な文字が入力されていないかチェックする処理の事ですよね。

それにつきましては、web.configの<pages>に以下の通り設定する事で、チェックを行わないようにできるとの事でしたので問題無いかと思われます。
<pages
  validateRequest="false"
/>
実際に、以前上記の設定をやっていなかった際は、ポストバックを走らせた瞬間に
「危険な可能性のある Request.Form 値がクライアント (txtA="&#8467;") から検出されました。」
というエラーになっておりましたが、今はエラーは発生しなくなりました。

また、私がお尋ねしたリットルは、gではなく単位に使用するリットル記号(lの筆記体のような文字)です。言葉足らずで申し訳ありませんでした。
また、投稿内容を確認して気付いたのですが、入力したリットル記号が全て”&#8467;”へ変わっていました。。。これからは投稿内容はきちんと確認するように致します。

リットル記号の場合で考えて頂き、もう一度ご返答頂けないでしょうか。
お忙しいところ申し訳ありません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-22 11:54
引用:

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

リットル記号の場合で考えて頂き、もう一度ご返答頂けないでしょうか。


どちらも実体参照に変わりはありませんけどね。
「g : &#13137;」「l : &#8467;」

引用:

HtmlInputTextで試してみたところ、デバッグしてみるとHtmlTextAreaの値は"&#8467;"と入っていました。


これは、

「HtmlInputText で試してみたところ、デバッグしてみると
 HtmlInputText Value は "&#8467;" と入っていました。」

の誤りでしょうか?

HtmlInputText は <input type="input"> です。
HtmlTextArea は <input type="teatarea"> です。

TextArea は、悪意のあるクライアント スクリプト防止のため、
勝手にエスケープされてしまう (仕様) かもしれません。
リファレンスを見てもその旨の注意書きがあるのは、HtmlTextArea クラスだけでした。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2005-11-22 11:56
&#8467; (U+2113 SCRIPT SMALL L)って、シフトJISには存在しない文字ではないでしょうか。
かもっち
会議室デビュー日: 2005/11/21
投稿数: 3
投稿日時: 2005-11-22 13:35
じゃんぬねっと様、スフレ様
ご返答ありがとうございます。


じゃんぬねっと様
----------------------------------------------------------
>これは、
>
>「HtmlInputText で試してみたところ、デバッグしてみると
> HtmlInputText Value は "&#8467;" と入っていました。」
>
>の誤りでしょうか?
----------------------------------------------------------
その通りです。申し訳ありません。

----------------------------------------------------------
>TextArea は、悪意のあるクライアント スクリプト防止のため、
>勝手にエスケープされてしまう (仕様) かもしれません。
>リファレンスを見てもその旨の注意書きがあるのは、HtmlTextArea クラスだけでした。
----------------------------------------------------------
調べて頂きありがとうございます。
HtmlInputTextとHtmlTextAreaで、値が異なる理由が分かりました。


スフレ様
----------------------------------------------------------
>&#8467; (U+2113 SCRIPT SMALL L)って、シフトJISには存在しない文字ではないでしょ>うか。
----------------------------------------------------------
リットル記号(&#8467;)はシフトJISには存在しない文字のなんですね。。。
調べてみたところ、&#12832;〜&#12841;(丸かっこつき漢数字一〜十)なども同様のようです。


皆様は、シフトJISに存在しない文字をブラウザ上に表示させる際、どのように処理されてますでしょうか。
最初の投稿からこのように書けばよかったのですが、私の理解不足と文章力の無さで、皆様にはご迷惑お掛けしております。。。
未記入
会議室デビュー日: 2005/10/27
投稿数: 6
投稿日時: 2005-11-22 14:19
文字コードの問題なら両方表示できないんでないかな?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-11-22 20:22
引用:

かもっちさんの書き込み (2005-11-22 13:35) より:
皆様は、シフトJISに存在しない文字をブラウザ上に表示させる際、どのように処理されてますでしょうか。


ShiftJISに存在しない文字を表示するためには、ShiftJISを使うのをやめ、表示したい文字をサポートしている文字コード体系を使う以外にないと思うけど。つまるところ、デフォルトで採用されているUnicodeを使っておきなさい。

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

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