VS2005 UTF-8通用HTTP处理程序:查询字符串中某些字符的问题(例如þæ)

VS2005 UTF-8通用HTTP处理程序:查询字符串中某些字符的问题(例如þæ),utf-8,visual-studio-2005,content-encoding,getstring,Utf 8,Visual Studio 2005,Content Encoding,Getstring,我正在VS2005中开发一个通用HTTP处理程序,并在调试模式下对其进行测试。除非查询字符串包含高位字符,例如拉丁小写字母Thorn/u00FEþ和拉丁小写字母Ae/u00E6æ,否则它工作正常 我机器上的IE8设置为发送UTF-8 URL。调试代码时,我在IE8地址栏中键入以下内容: http://app/myHandler.ashx?term=foo // everything works http://app/myHandler.ashx?term=þorn // does n

我正在VS2005中开发一个通用HTTP处理程序,并在调试模式下对其进行测试。除非查询字符串包含高位字符,例如拉丁小写字母Thorn/u00FEþ和拉丁小写字母Ae/u00E6æ,否则它工作正常

我机器上的IE8设置为发送UTF-8 URL。调试代码时,我在IE8地址栏中键入以下内容:

http://app/myHandler.ashx?term=foo // everything works http://app/myHandler.ashx?term=þorn // does not work -- query from database fails 数据库是SQLite,使用UTF-8编码,工作正常。使用这些特殊字符的查询在使用其他GUI工具或使用System.Data.SQLite GUI加载项直接针对SQLite发出时可以正常工作

我是否正确解码查询字符串中的值?GetString不解码字节吗

在HTTP处理程序中,ContentEncoding设置为UTF-8:

context.Response.ContentEncoding = System.Text.Encoding.UTF8; 在调试器的本地窗口中,Request.ContentEncoding也是UTF-8

但当我在locals窗口中检查查询字符串值时,查询字符串“þorn”中的术语值显示为“[]orn”,这就是我发送到数据库的sql语句中的显示方式。就好像这个角色还没有被认出来


从查询字符串中获取值并将其转换为字符串的方式是否有问题?

在解码之前,context.Request.QueryString[term]在整数中包含什么?也许它已经有了你想要的价值。如果当前字节不是UTF8格式,UTF8.GetBytes将不会有帮助。

谢谢您的提示,eed3si9n。这让我找到了解决办法

我误以为IE会将手工输入的字符转换为地址栏中的设置中指定的编码。没有。在那里键入的URL必须已经编码

context.Response.ContentEncoding = System.Text.Encoding.UTF8;