簡體   English   中英

無法從服務器到客戶端接收語言文本

[英]Unable to receive language text from server to client

我想存儲印度語言並再次顯示保存的消息。(帶有語言消息的 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);
});

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

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

我不確定 DB,我試過 MySQL。 但是,我想應該是一樣的。 如果您沒有指定 UTF8,您應該看到類似 ?????? 在你的數據庫中,你應該看到印地語數據。 如果您沒有指定,請指定並嘗試。 快速代碼:首先檢查 UTF8 與此查詢的兼容性。 如果它支持你應該看到輸出為“Character_set_system”| “UTF8”顯示變量如“character_set_system”;

既然被檢查了,改變表並只修改列,將其指定為UTF8

ALTER TABLE tableName MODIFY columnname VARCHAR(10) CHARACTER SET UTF8; 現在,嘗試插入印地語/本地語言值並保存。 查詢它,你應該看到印地文文本。

我終於得到了答案,問題出在 tomcat 和 mysql 配置(我的項目中的 context.xml)。

  • 首先 tomcat server.xml "Connection" 標簽應該有 encryption="UTF-8"
  • 在 context.xml 中的第二個,當給出 mysql 的 url 時需要附加“?useUnicode=true&characterEncoding=UTF-8”,它指定了 unicode 和編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM