0

URL パラメータを 1 つ取り、それをページに出力する非常に単純な ColdFusion Web アプリケーションがあります。しかし、UTF-8 でエンコードされた値が送信されたとしても、受信していないようです。

Fiddler から取得した HTTP 要求を次に示します。

POST http://blahblahwebservice/getme.htm HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
User-Agent: unicode_post
Host: miscmsuatsw
Content-Length: 14  
Pragma: no-cache
Cookie: CFID=247445; CFTOKEN=305db8322d5cecfb-627BD26F-BC91-0EC2-25E9745308EF96F7

sysopts=ΠΣΩ

HEX での表示は次のとおりです (URL & HTTP/1.1 と 2 つの CRLF & ホストを削除):

43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 61 70     Content-Type: ap
70 6C 69 63 61 74 69 6F 6E 2F 78 2D 77 77 77 2D     plication/x-www-
66 6F 72 6D 2D 75 72 6C 65 6E 63 6F 64 65 64 3B     form-urlencoded;
20 63 68 61 72 73 65 74 3D 55 54 46 2D 38 0D 0A      charset=UTF-8..
55 73 65 72 2D 41 67 65 6E 74 3A 20 75 6E 69 63     User-Agent: unic
6F 64 65 5F 70 6F 73 74 0D 0A 48 6F 73 74 3A 20     ode_post..Host: 
-- -- -- -- -- -- -- -- -- -- -- 0D 0A 43 6F 6E     .............Con
74 65 6E 74 2D 4C 65 6E 67 74 68 3A 20 31 34 0D     tent-Length: 14.
0A 50 72 61 67 6D 61 3A 20 6E 6F 2D 63 61 63 68     .Pragma: no-cach
65 0D 0A 43 6F 6F 6B 69 65 3A 20 43 46 49 44 3D     e..Cookie: CFID=
32 34 37 34 34 35 3B 20 43 46 54 4F 4B 45 4E 3D     247445; CFTOKEN=
33 30 35 64 62 38 33 32 32 64 35 63 65 63 66 62     305db8322d5cecfb
2D 36 32 37 42 44 32 36 46 2D 42 43 39 31 2D 30     -627BD26F-BC91-0
45 43 32 2D 32 35 45 39 37 34 35 33 30 38 45 46     EC2-25E9745308EF
39 36 46 37 0D 0A 0D 0A 73 79 73 6F 70 74 73 3D     96F7....sysopts=
CE A0 CE A3 CE A9                                   ΠΣΩ

具体的には、ΠΣΩですCE A0 CE A3 CE A9

レンダリングすると、単に「???」が表示されます。ページが utf-8 をレンダリングできることはわかっています。UTF-8 の 16 進文字を設定すると、問題なくレンダリングされるため、これらのバイトの受信にあると思いますU+03A0

UTF-8 を処理するために、CF Web ページに欠けているものはありますか??

4

3 に答える 3

4

<cfprocessingdirective pageEncoding="utf-8">CFM の最初の行を試してください。

それが機能する場合は、CF Builder などのエディターに切り替える必要があります。CF Builder では、BOM スタンプがそれを処理し、処理ディレクティブは必要ありません。

于 2012-05-31T19:18:38.717 に答える
0

関数を使用して、ColdFusion が utf-8 であることについて「もっと考えて」みることができsetEncodingます。

<cfscript>
    SetEncoding("url", "utf-8");
    SetEncoding("form", "utf-8");
</cfscript>

よほど専門的なことをしているのでない限り、これらの 2 行は常にApplication.cfm/c.

このタグは、ファイル自体cfprocessingdirectiveに utf-8 文字が含まれている場合にのみ役立ちます。.cfmurl/form/cookie/database などからの UTF-8 でエンコードされた文字列は、そのカテゴリに分類されないため、そのタグの影響を受けません。

于 2012-05-31T21:58:11.250 に答える
0

また、すべてのアプリケーション/システムには、独自のセットまたはデフォルトのエンコーディングがあります。これには、Web サーバー、DB サーバー、ブラウザー、DB フロントエンド、エディターが含まれます。明らかなことを除外する前に、これらすべてをチェックする必要があります。

また、これを試して、何が得られるかを確認してください。

<cfscript>
    ....
    charencode=CharsetEncode(yourstuffgoeshere, "UTF-8");
    WriteOutput("<br />" & charencode);
</cfscript>

あなたのデータが実際にバイナリデータであるかどうかに興味があります。もしそうなら、これはあなたのためにそれをエンコードします。ただし、推奨されるアプローチは、ブラウザ、サーバーなどを確認することです

フェイス・スローン

于 2012-05-31T22:52:39.723 に答える