2016-08-17 33 views
-5

我试图在网站上表示文字。如何在JavaScript中表示其他语言?

但是,该文本是从Perl返回的HTML结果中提取的。所以它已经在UTF-8中。英文文本显示正常,但是,泰文文本显示不正确。

这是我存储在数据库

http://windu.cpe.kmutt.ac.th/cgi-bin/Devel/SeniorProjectAssistant.pl?action=getabstract&projectid=88&english_flag=false&projectyear=2559

编码设置为UTF-8的泰文,你会看到在正确呈现泰语文本。

,但我得到的输出并不像我期待

Click here to see the output

正如你所看到的英文原文是正确的,但泰国的文字是没有的。

这是我用来从数据库中提取数据的代码;

function getAbstract_API(projectYear,projectId,english_flag,successfunction, errorfunction) 
{ 
var requestString = url + "?action=getabstract&projectyear=" + projectYear; 
requestString += "&projectid=" + projectId + "&english_flag=" + english_flag; 
var request = new XMLHttpRequest(); 
request.open("Get",requestString); 
request.send(null); 
// Register a handler to take care of the data on return 
request.onreadystatechange = function() 
    { 
    if (request.readyState == 4) 
     {   
     if (request.status == 200) 
      { 
      // If we get here, we got a complete valid HTTP response 
      var response = request.responseText; 
      var errorpattern = /\w*ERROR/; 
      if (response.match(errorpattern)) 
       { 
       var errcode = extractErrorCode(response); 
       var messagedetail = getMessageDetail(errcode); 
       showI18NAlert(messagedetail); 
       if (errorfunction) 
        errorfunction(); 
       return false; 
       } 
      alert(response); 

      if (successfunction) 
       successfunction(); 
      } 
     else 
      { 
      showI18NAlert('requesterror_msg'); 
      } 
     } 
    } 
} 

我用alert(response)检查结果,英文很好,泰文不好。所以我认为这一步肯定有些失误。

有人有什么想法如何处理这种情况?

+1

你能举一个你期待什么的例子吗? –

回答

0

你的Perl程序发送的数据不是utf-8编码的。如果您查看标题,您会看到它是Latin-1(ISO-8859-1)。

HTTP/1.1 200 OK 
Date: Thu, 18 Aug 2016 08:14:27 GMT 
Server: Apache/2.2.15 (CentOS) 
Connection: close 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=ISO-8859-1 

我不知道如何创建输出。如果是CGI.pm,则只需更改标题以包含正确的编码字符串。它可能看起来像这样。

print $cgi->header(
    -type  => 'text/html', 
    -charset => 'utf-8', 
); 

您还没有发送一个完整的HTML文档。你的文档结构就是这样。

<h3> 
... 
</h3> 
</body> 
</html> 

有东西丢失。这与问题无关,但可能会给您带来其他问题。如果您想要的只是获取文本,请考虑将您的响应切换为text/plain并完全删除HTML,或者仅使用application/json并将其包装在JSON对象中。