浏览器代码页检测

时间:2010-11-14 22:37:53

标签: browser codepages

我有一个ASP.Net页面,用户可以在TEXTAREA中输入一些文本并将其提交给服务器。该文本将存储在数据库中,并将在winform应用程序中显示。

如何确保winform application显示用户在TEXTAREA中输入的确切字符。

也就是说,我是否有潜在的问题,比如用户输入特殊语言特定的字母,如Æ,Ø和Å,这些是丹麦字母?
这些字母根据代码页有不同的代码,所以据我所知,我需要知道TEXTAREA控件显示输入的代码页。或者我在这里遗漏了什么?

我试图在网上找到这方面的材料,但很难找到解决这个问题的东西。我通常发现页面讨论服务器需要浏览器使用的代码页,以便正确显示发送的数据。

但我的问题是另一种方式,即从客户端到服务器。

2 个答案:

答案 0 :(得分:1)

如果您想要确保发送带有糟糕浏览器的文本的用户不会破坏您的数据主干,您也可以使用HEBCI: HTML Entity-Based Codepage Inference技术。

本质中,这就是它的工作原理:

每个代码页都有自己的指纹。例如,单个实体“& ordm;”可以用来区分三巨头:ISO-8859-1 / Windows-1252(= BA),MacRoman(= BC)和UTF-8(= C2BA)。

在表单中,您只需添加一个隐藏的输入,其中包含指纹作为实体(如& deg;,& divide;和& mdash;),当用户提交表单时,您只需检查返回的十六进制值并将它们与您的指纹表进行比较。 如果这不能给出匹配,那么只有那些继续其他后退解决方案。

稍微大一点的实现只需要五个代码点就可以了:

my @fp_ents = qw/deg divide mdash bdquo euro/;
my %fingerprints = (
  "UTF-8" => ['c2b0','c3b7','e28094','e2809e','e282ac'],
  "WINDOWS-1252" => ['b0','f7','97','84','80'],
  "MAC"          => ['a1','d6','d1','e3','db'],
  "MS-HEBR"      => ['b0','ba','97','84','80'],
  "MAC-CYRILLIC" => ['a1','d6','d1','d7',''],
  "MS-GREEK"     => ['b0','','97','84','80'],
  "MAC-IS"       => ['a1','d6','d0','e3',''],
  "MS-CYRL"      => ['b0','','97','84','88'],
  "MS932"        => ['818b','8180','815c','',''],
  "WINDOWS-31J"  => ['818b','8180','815c','',''],
  "WINDOWS-936"  => ['a1e3','a1c2','a1aa','',''],
  "MS_KANJI"     => ['818b','8180','','',''],
  "ISO-8859-15"  => ['b0','f7','','','a4'],
  "ISO-8859-1"   => ['b0','f7','','',''],
  "CSIBM864"     => ['80','dd','','',''],
 );

答案 1 :(得分:0)

您可以查看内容类型标题以找出编码。

有关详细信息,请参阅this SO回答相关问题。