Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp html中的编码问题:使用Struts 1.2的表单_Jsp_Utf 8_Character Encoding_Weblogic_Struts 1 - Fatal编程技术网

Jsp html中的编码问题:使用Struts 1.2的表单

Jsp html中的编码问题:使用Struts 1.2的表单,jsp,utf-8,character-encoding,weblogic,struts-1,Jsp,Utf 8,Character Encoding,Weblogic,Struts 1,我有一个使用Struts 1.2的应用程序,在.jsp中我使用html标记创建了一个表单,这是我代码的一部分: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tag

我有一个使用Struts 1.2的应用程序,在.jsp中我使用html标记创建了一个表单,这是我代码的一部分:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html-el" prefix="html" %>
...
<html:form action="/myAction" method="post">
...
  <display:table name="ListOfEntries" sort="external" requestURI="/myEntryAction.do" uid="row">
  ...
    <display:column titleKey="label.label" sortable="true" sortProperty="label">
      <span id="staticlabel<c:out value="${row.id}" />">
        <bean:write name="row" property="label" />
      </span>
      <html:text name="MyEntryForm" property="editedEntry.label" value="${row.label}" disabled="true" style="display:none" size="35"/>
    </display:column>

...
...
...
因此,当编辑带有特殊字符的条目时,在my
MyEntryForm
中,我将其作为
Ã

提前谢谢

更新:
我忘了提到我正在使用Weblogic。

我在这里看到了几个可能的问题和解决方案

1) 为了正确解码HTML文件,您应该告诉浏览器使用什么编码。你可以通过设置或设置来告诉他。在HTML中,添加此元标记,然后查看是否使其在浏览器中正确显示:

对于HTML4:

对于HTML5:


2) 通过HTTP提供页面时,HTML元标记将被忽略。只有当客户端将页面保存为本地磁盘系统上的HTML文件,然后通过浏览器中的文件://URI打开时,才会使用该文件

因此,HTTP请求主体编码显然没有设置为UTF-8。请求正文编码需要由

request.setCharacterEncoding("UTF-8");

3) 更改数据库连接编码

在打开到的数据库连接后,应始终使用以下命令一次:


4) 检查数据库的编码。您可以使用以下方法更改数据库的编码:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

5) 此外,文件应以UTF-8格式记录。例如,在Eclipse中:左键单击文件->属性->签出->文本文件编码。或者在记事本++中执行



因此,这些是最常见的问题。如果它不起作用,请向我们提供有关您的问题的进一步信息。但其主要思想实际上始终是一样的:如果您将不同的工具组合在一起并将它们组合在一起,那么每个工具都应该知道在另一个工具中使用了什么编码。许多问题是由于一个工具误解了另一个工具实际使用的编码。

我发现了问题所在

在这个问题中,我忘了提到我使用Weblogic作为服务器。使用Firefox或Chrome进行调试时,我检查了来自浏览器的请求是否正确,字符是否正确,因此它必须是服务器

在我的项目中,我有一个weblogic.xml,其中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>

<weblogic-web-app
    xmlns="http://www.bea.com/ns/weblogic/90"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.bea.com/ns/weblogic/90
    http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">

<description>My Struts Application</description>

<context-root>RootOfMyApplication</context-root>

<container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
    <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>

</weblogic-web-app>

我的Struts应用程序
RootOfMyApplication
真的
真的
我补充说,问题已经解决了:

<charset-params>
    <input-charset>
        <resource-path>/*</resource-path>
        <java-charset-name>UTF-8</java-charset-name>
    </input-charset>
</charset-params>

/*
UTF-8

请提供有关您的数据流的更多信息。您是否将数据保存在数据库中?可能是您的数据库未准备好utf-8。问题是当我编辑条目时,在字符正常之前,数据库中的字符存储为
ch
。当然,如果我保存编辑的条目,数据库中的存储是错误的。回答得好,弗拉德,谢谢!。但我发现了问题所在,我回答了自己的问题。
<charset-params>
    <input-charset>
        <resource-path>/*</resource-path>
        <java-charset-name>UTF-8</java-charset-name>
    </input-charset>
</charset-params>