我认为服务器期望的网址被编码为UTF-8所以我总是将我的网址编码为UTF-8,但事实证明它希望它们被编码为IS0-8859-1。
即使包含中文,阿拉伯语和其他非拉丁字符,也可以使用IS0-8859-1对任何值进行网址编码,因为修改客户端到服务器会更加简单。
从答案更新
所以我有点困惑,如果我的查询值是'Björk'并且我将它放入IE浏览器我得到了预期的结果,如果我将相同的值放入Firefox我得到不正确的结果。我的理论是IE是对iso8859进行uriencoding而我的服务器预计会收到iso8859所以工作,但firefox是uriencoding为utf8而且我的服务器总是期望iso8859它解码错误并给出错误的结果,
事实上我确定这是正确的,因为如果我在我的客户端代码中将uriencode编码为iso8859,并且如果我在UTF8中使用urlencode,则会得到错误的结果。如果我根本没有uriencode,那么服务器根本无法理解查询,所以你必须进行uri编码。
因为我正在寻找ö我认为这意味着任何东西都可以编码为ISO88591。我意识到它只有一个字节(256个字符),但我认为uriencoding在编码之前将字符转换成多个字节,但现在意识到ö实际上在IS0-8859中为char 214。
所以我想唯一的解决方案是让服务器期望UTF8并让客户端发送UTF8
答案 0 :(得分:0)
a)不要求在URI中使用任何特定的编码。但是,UTF-8是最好的选择。只是不要依赖每个人这样做。
b)不,ISO-8859-1只能代表256个不同的字符。