首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MS Word复制的文本通过HTML格式发送到Java时,会出现奇怪的字符,并且文本长度会增加

问从MS Word复制的文本通过HTML格式发送到Java时,会出现奇怪的字符,并且文本长度会增加
EN

Stack Overflow用户
提问于 2012-01-17 21:43:49
回答 2查看 1.1K关注 0票数 0

我从MS Word复制了以下文本,并将其粘贴到HTML输入文本字段中

代码语言:javascript
复制
Test…. !! Wow

它在浏览器上显示正确,长度也是13个字符。但是当我提交表单时,Java代码中收到的文本是

代码语言:javascript
复制
Testâ¦. !! Wow

我在Javascript和Java代码中检查了最大文本字段长度。因为在Java代码中文本的长度增加了,所以在Javascript中可能会验证文本,但在Java代码中可能会失败。我希望两种情况下的格式相同(或者至少相同的长度,以便验证一致)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-17 22:47:29

我们在这里看到的“?”是由三个字节0xE2 0x80 0xA6产生的,它们构成了“…”的UTF-8编码表示。U+2026 HORIZONTAL ELLIPSIS。字节0xE2解释为拉丁文-1 (ISO-8859-1或windows-1252)编码时为“-”,类似地,0xA6为“π”。0x80字节发生了什么还不清楚,但可能它已经被过滤掉了,因为在ISO-8859-1中它是一个控制字符。

因此,表单数据显然是以UTF8编码的形式发送的(这通常取决于包含表单的页面的编码,尽管也可以使用<form>标记中的accept-charset属性进行设置)。这一切都很好,因为UTF-8是确保正确发送所有字符的唯一方法。

所以问题出在接收方。Java代码表面上假定数据是8位编码(一个字节=一个字符),但事实并非如此。

(文本包含U+2026的原因可能是Word中的自动更正:默认情况下,Word在键盘输入中会轮换,三个连续的句点“...”一个字符,省略号“…”。)

票数 2
EN

Stack Overflow用户

发布于 2012-01-17 21:46:33

这几乎可以肯定是一个编码问题。您粘贴的字符将是UTF-8 (或类似的),但将作为ANSI字符发送。您需要设置提交的编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8895637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档