html - 如何使用 Servlet 从 HTML 表单中检索 URDU 数据(UTF-8)以插入 MYSQL 数据库

标签 html mysql jsp servlets utf-8

场景: 我的 MYSQL 默认为 UTF-8。 我的 HTML 和 JSP 页面也是如此,它们都以 UTF-8 作为标准。 如果我将表单方法保留为:

表单操作=“reg”方法=“post”接受字符集=“ISO-8859-1,utf-8;q=0.5”enctype=“application/x-www-form-urlencoded”名称=“form1 “id="form1"
^-------- 有效

如果 表单操作=“reg”方法=“post”accept-charset=“ISO-8859-1”enctype=“application/x-www-form-urlencoded”name=“form1”id=“form1”

^--------------有效

如果 表单操作=“reg”方法=“post”accept-charset=“utf-8”enctype=“application/x-www-form-urlencoded”名称=“form1”id=“form1” ^--------它不起作用,而是显示类似通配符的字符。

问题陈述: 当我将 HTML 页面重定向到 JSP 页面并使用 <% out.println( request.getParameter("name"));%> 它正确显示: Ìñode

但是,当我使用 String xx=request.getParameter("name"); 时 然后显示它显示的字符串: ج ; نید

因此,除了硬编码之外,我无法将 urdu 放入我的数据库中。

我需要一个解决方案: 从 URDU 中的 HTML 表单中获取用户输入,例如: Ìñð 并在数据库中插入相同的内容,而不是 ج ;ن ;ی ;د ;这也对应于 Ìñode

最佳答案

您不应该使用String xx=request.getParameter("name");您可以使用 String xx= new String(request.getParameter("name"),"<Proper-Encoding>"); 来代替它

然后你的String对象xx不会腐败。

或者

您可以使用String xx = URLDecoder.decode(request.getParameter("name"),"<Proper-Encoding>")

您通过打印 request.getParameter("name") 获得了正确的值因为 servlet 容器已经以正确的格式为您对其进行了编码。和out JSP 中的编写器以正确的格式进行解码。

所以要保存request.getParameter("name")xx你必须自己解码它。

您可以引用以下链接以获得更清晰的理解。

Question1

Question2

Blog

关于html - 如何使用 Servlet 从 HTML 表单中检索 URDU 数据(UTF-8)以插入 MYSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27000743/

相关文章:

html - 编辑 <li> 的高度和宽度真的不可取吗?

javascript - 重置表单会删除输入文件上的 HTML 5 验证

javascript - 单击添加按钮时不想清除文本框

mysql - 我的第一个 Sqoop 工作出错。

java - 你能让 JSP 在未声明的变量上崩溃吗?

javascript - 如何从 javascript 更改 JSP 中的消息文本?

html - 如何在html中找到类定义?

c# - 无法关闭 MySQL 数据库连接

mysql - 仅属性已知的多对多关系查询

java - 注销后如何重定向登录页面