Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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
Javascript 聊天应用程序中发送本地语言消息时出现UTF-8问题?_Javascript_Ajax_Jsp_Servlets_Utf 8 - Fatal编程技术网

Javascript 聊天应用程序中发送本地语言消息时出现UTF-8问题?

Javascript 聊天应用程序中发送本地语言消息时出现UTF-8问题?,javascript,ajax,jsp,servlets,utf-8,Javascript,Ajax,Jsp,Servlets,Utf 8,在我的聊天应用程序中,我需要用本地语言发送消息 当尝试向代理发送消息并在客户端准确显示消息时,它工作正常 但在展示中的代理端நீங்கள் எப்படி இருக்கிறீர்கள்(英语-你好) 在我使用的jsp页面中 <%@ page contentType="text/html; charset=UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html;

在我的聊天应用程序中,我需要用本地语言发送消息

当尝试向代理发送消息并在客户端准确显示消息时,它工作正常

但在展示中的代理端நீங்கள் எப்படி இருக்கிறீர்கள்(英语-你好)

在我使用的jsp页面中

<%@ page contentType="text/html; charset=UTF-8"%> 
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8; ">
<title>Initializer</title>
<link rel="stylesheet" type="text/css" href="css/login.css" />
<script type="text/javascript" src="javascript/login.js"></script>
</head>
<body>

<div><textarea id="textarea" rows="10" readonly></textarea></div>
<div>
<table>
    <tr>
        <td id="msg" class="fontStyle">message :</td>
        <td id="msgvalue"><input size="40" type="text" id="message"
            onkeydown="enterKey()" /></td>
        <td style="width: 5%;"></td>
        <td>
        <center><input type="button" id="button3"
            onclick="sendMessage()" value="Send" /></center>
        </td>
    </tr>
</table>
</div>
</div>
</body>
在我的servlet中

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        PrintWriter out = response.getWriter();

        msg = request.getParameter("message");
        //System.out.println("msg -----> : "+msg);
        seckey = request.getParameter("securekey");
        uid = request.getParameter("userId");
        sessionId = request.getParameter("sessionId");
        //counter =Integer.parseInt(request.getParameter("counter"));
        counter = 1;
        protocol = ApplicationInfo.flexProtocol;

        message = new SendMessage();
        message.send(msg, seckey, uid, sessionId, counter, protocol);

        CustomerInfo customer = ApplicationInfo.customerDetails.get(uid);

        out.print(customer.getMessage());


    }
提前谢谢

但在展示中的代理端நீங்கள் எப்படி இருக்கிறீர்கள்(英语-你好)

如果在通过HTTP线传输之前,ISO-8859-1被错误地用于将给定字符解码为字节,或者当客户端被错误地指示ust ISO-8859-1将检索到的字节编码为字符时,您将得到完全相同的结果。证据如下:

System.out.println(new String("நீங்கள் எப்படி இருக்கிறீர்கள்".getBytes("UTF-8"), "ISO-8859-1"));
基本上,您需要指示servlet容器使用UTF-8将给定的字符解码为字节,客户机使用UTF-8将检索到的字节编码为字符。否则它将默认为ISO-8859-1。在将任何内容写入响应之前,可以在servlet中执行以下操作:

response.setCharacterEncoding("UTF-8");
另见:

与具体问题无关,您还有其他潜在的编码问题;您还没有指示JSP使用UTF-8呈现响应。仅设置
@page contentType
是不够的,您还需要设置
@page pageEncoding
。更重要的是,单独设置它已经足够了,因为JSP已经默认为
text/html

<%@ page pageEncoding="UTF-8"%> 

还请注意,当通过HTTP提供页面时,HTML
标记是而不是。这显然被忽视了。只有当最终用户将HTML输出保存到磁盘上的HTML文件,然后通过
file://
URI从磁盘重新打开它时,才会使用它。

doPost
函数的顶部,尝试
response.setCharacterEncoding(“UTF-8”)我已经试过了。但是得到了相同的消息…我想在tomcat6.0中设置什么吗?当我包含请求时,setCharacterEncoding(“UTF-8”);在我的Servlet中,我在我的客户端也得到了相同的消息,你读过答案而不是只看最后出现的代码块了吗?根据提供的答案,你到底改变了什么还不清楚。您是否更改了所有内容或仅更改了响应编码?建议完全按照答案中提到的内容进行更改。请注意,正如我在回答中已经暗示的那样,时间非常重要。如果在第一次获得响应编写器后设置响应编码,则为时已晚。如果在第一次获取任何请求参数后设置请求编码,则为时已晚。检查过滤器,如果有的话。我想在tomcat6.0中设置什么吗?我得到了解决方案,我只是在servlet中添加了行msg=newstring((request.getParameter(“message”)).getBytes(“ISO-8859-1”),“UTF-8”);而且工作很好。
<%@ page pageEncoding="UTF-8"%> 
request.setCharacterEncoding("UTF-8");