Browser 浏览器代码页检测

Browser 浏览器代码页检测,browser,codepages,Browser,Codepages,我有一个ASP.Net页面,用户可以在TEXTAREA中输入一些文本并将其提交给服务器。此文本将存储在数据库中,并在winform应用程序中显示 如何确保winform应用程序显示用户在文本区域中输入的确切字符 也就是说,我是否有一个潜在的问题,例如,如果用户输入特殊语言的字母,如Æ、Ø和Å,这是丹麦字母? 根据代码页的不同,这些字母有不同的代码,所以就我所见,我需要知道TEXTAREA控件显示其输入的代码页。还是我在这里遗漏了什么 我曾试图在网上找到这方面的资料,但很难找到解决这一问题的资料。

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

如何确保
winform应用程序
显示用户在文本区域中输入的确切字符

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

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


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

您可以查看内容类型标题以了解编码


有关更多详细信息,请参见相关问题的答案。

您可以查看内容类型标题以了解编码

有关更多详细信息,请参见相关问题的答案。

如果您确实希望确保使用蹩脚浏览器发送文本的用户不会损坏您的数据主干,也可以使用该技术

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

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

在表单中,您只需添加包含这些指纹的隐藏输入作为实体(如°;、÷;、和—),当用户提交表单时,您只需检查返回的十六进制值并将其与指纹表进行比较。 如果这不匹配,则只能继续其他回退解决方案

稍大一点的实现只需五个代码点即可实现:

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','','',''],
 );
如果您真的想确保使用蹩脚浏览器发送文本的用户不会损坏您的数据主干,您也可以使用该技术

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

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

在表单中,您只需添加包含这些指纹的隐藏输入作为实体(如°;、÷;、和—),当用户提交表单时,您只需检查返回的十六进制值并将其与指纹表进行比较。 如果这不匹配,则只能继续其他回退解决方案

稍大一点的实现只需五个代码点即可实现:

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','','',''],
 );

2012年5月,我查看了facebook的登录html源代码,发现他们实际上使用了这种技术,哈哈!2012年5月,我查看了facebook的登录html源代码,发现他们实际上使用了这种技术,哈哈!