![]() |
1
31
我问了同样的问题, Handling Character Encoding in URI on Tomcat 我最近找到了一个解决方案,它对我很有效。你可能想试试。这是你需要做的,
例如,要从查询字符串中获取参数,
你可以一直这样做。未更改具有正确编码的字符串。 代码已附加。祝你好运!
编辑:由于各种原因,您的方法不起作用。当出现编码错误时,你不能指望从Tomcat那里得到什么。有时你会得到?.others times,您不会得到任何结果,getParameter()返回空值。假设您可以检查“?”,查询字符串包含有效的“?”? 此外,你不应该拒绝任何请求。这不是用户的错。正如我在原始问题中提到的,浏览器可以用UTF-8或拉丁语-1编码URL。用户没有控制权。你需要接受两者。将servlet更改为Latin-1将保留所有字符,即使它们是错误的,为我们提供修复或丢弃它的机会。 我在这里发布的解决方案并不完美,但这是迄今为止我们发现的最好的解决方案。 |
![]() |
2
14
如果发现无效字符,可以使用配置为引发异常的charsetdecoder:
|
![]() |
3
4
将所有控制字符替换为空字符串
|
![]() |
4
4
这是我用来检查编码的:
编辑:用Vouze建议更新 |
![]() |
5
3
URLDecoder 将解码为给定的编码。这应该适当地标记错误。然而,文件规定:
所以你应该试试。另请注意(来自decode()方法文档):
所以还有别的事情要考虑! 编辑:Apache Commons URLDecode 声明对错误编码抛出适当的异常。 |
![]() |
6
3
我一直在研究一个类似的“猜测编码”问题。最佳解决方案包括 知道 编码。除此之外,你可以做出有根据的猜测来区分utf-8和iso-8859-1。 要回答如何检测字符串是否正确编码了UTF-8的一般问题,可以验证以下内容:
如果一个字符串通过了所有这些测试,那么它就可以解释为有效的UTF-8。这不能保证 是 UTF-8,但它是一个很好的预测器。 ISO-8859-1中的合法输入可能没有除行分隔符以外的控制字符(0x00-0x1F和0x80-0x9F)。看起来0x7F也没有在ISO-8859-1中定义。 (我基于维基百科的utf-8和iso-8859-1页面。) |
![]() |
7
2
您可能希望在您的请求中包含一个已知参数,例如“.amp;enctest=_”,以安全地区分不同的编码。 |
![]() |
8
1
您需要从一开始就设置字符编码。尝试发送正确的 内容类型 例如,标题 内容类型:text/html;charset=utf-8 修复正确的编码。标准符合性 refers to utf-8 and utf-16 as the proper encoding 对于Web服务。检查您的响应头。 另外,在服务器端(在浏览器无法正确处理服务器发送的编码的情况下),通过分配新字符串强制编码。此外,您还可以通过执行单个操作来检查编码的UTF-8字符串中的每个字节。 每个字节&0x80 ,将结果验证为非零。
同样,采取 look on this article 希望对你有帮助。 |
![]() |
9
1
以下正则表达式可能对您感兴趣: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/185624 我在Ruby中使用它,如下所示:
|
![]() |
10
0
在任何你能接触到的地方,尽量使用utf-8作为默认值。(数据库、内存和用户界面) 一个字符集和一个字符集编码可以减少很多问题,实际上它可以提高Web服务器的性能。编码/解码过程中浪费了大量的处理能力和内存。 |
![]() |
M - · 为什么两个相同的表情符号不相等? 2 年前 |
![]() |
Mohsen · 将字符串从Windows 1256转换为UTF-8 6 年前 |
![]() |
AMINA ARSHAD · 从字符转换为Unicode数字时出错 6 年前 |
![]() |
Taqwa · 在C#[已关闭]中将上标转换为Unicode 6 年前 |