无法从服务器到客户端接收语言文本

时间:2018-08-21 05:05:40

标签: javascript java jquery frontend server-side

我想存储印度语言,然后再次显示已保存的消息。(带有语言消息的CRUD操作)。我能够实现创建,但是当尝试阅读时我得到“ ???”而不是保存的语言内容(即, )。因此,当我调试时,我找到数据,直到打印书写器对象按预期显示在语言中为止。但是当我收到有关JavaScript的Ajax时。我得到“ ????”。

注意:
我尝试了内容类型-文本/ html,应用程序/ json。
编码为UTF-8

在服务器上:

response.setCharacterEncoding("UTF-8");
response.setContentType("text/plain;charset=UTF-8");
response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("x-xss-protection", "1; mode=block");
response.setHeader("x-frame-options", "SAMEORIGIN");

out = response.getOutputStream();
out.write("नमस्ते");// this is coming from db

在客户端

$.get({
   url: "/server/langMsg",
}).then(function(rspTxt){
   var json = $.parseJSON(rspTxt);
});

3 个答案:

答案 0 :(得分:1)

您不需要使用ServletOutputStream。只需使用javax.servlet.PrintWriter

response.getWriter().print("नमस्ते");

答案 1 :(得分:0)

我不确定数据库是否已使用MySQL。但是,我想应该是一样的。  如果您未指定UTF8,则应该看到类似??????的内容。在其他数据库中  您应该看到印地文数据。如果未指定,请指定并尝试。  快速代码:  首先使用此查询检查UTF8兼容性。如果它支持你应该  看到输出为“ Character_set_system” | “ UTF8”  显示变量,例如“ character_set_system”;

现在检查一下,更改表并只修改列,指定它  作为UTF8

ALTER TABLE tableName修改列名VARCHAR(10)CHARACTER SET UTF8;  现在,尝试插入印地文/本地语言值并保存。查询它和你  应该看到印地文文字。

答案 2 :(得分:0)

我终于得到了答案,问题出在tomcat和mysql配置(在我的项目中为context.xml)。

  • tomcat server.xml的第一个“连接”标记应具有加密=“ UTF-8”
  • 在提供mysql的URL时,context.xml中的第二个需要附加“?useUnicode = true&characterEncoding = UTF-8”,用于指定unicode和编码。