场景: 我的 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
你必须自己解码它。
您可以引用以下链接以获得更清晰的理解。
关于html - 如何使用 Servlet 从 HTML 表单中检索 URDU 数据(UTF-8)以插入 MYSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27000743/