如何在 javascript 中表示其他语言?

Posted

技术标签:

【中文标题】如何在 javascript 中表示其他语言?【英文标题】:How do I represent other languages in javascript? 【发布时间】:2016-12-24 10:20:42 【问题描述】:

我尝试在网站中表示文本。

但是,该文本是从 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,您将看到正确呈现的泰语文本。

但是我得到的输出不是我期望的

如您所见,英文文本是正确的,但泰文文本不正确。

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

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】:

您的 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 对象中。

【讨论】:

以上是关于如何在 javascript 中表示其他语言?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中表示浮点数? [复制]

如何在 MySQL 中表示树及其内容?

如何将 1 添加到 JavaScript 中表示为字符串的大整数?

如何在 R 中表示和合并具有*日期范围*的时间序列数据帧?

JSON文件

在Delphi中 如何在字符串中表示 CTRL+ENTER 组合键?