有时,拉丁字母(äöüèß)字符将返回为

时间:2014-08-11 08:02:30

标签: node.js unicode

我想回复原始文本。

但是当我收到ä这封信的时候,我有时会得到 。

e.g。对于Stäblistraße,云返回St blistraße。 它并不总是发生。但即使有一次太多了..

如何验证它永远不会再发生?

我尝试了utf8.decode(value)但没有工作 - Error: Invalid continuation byte

附加的代码段:

var sendResponse = function(res,response,type)
{
  res.writeHeader(200, {
    "Content-Type" : "text/plain"
  });
  res.write((JSON.stringify(response))+"\n");
  res.end();
}

3 个答案:

答案 0 :(得分:0)

您正在St��blistraße输出有效的UTF-8,因为ä呈现为两个字节。但是,您的浏览器并不知道它的UTF-8。发送标题(可能使用response.setHeader()):

Content-Type: text/html; charset=utf-8

或在HTML中添加meta标记:

  • 在HTML5中,

    <meta charset="utf-8">
    
  • 在HTML4 / XHTML中,

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    

(假设您正在向浏览器发送HTML;您对细节有点模糊)。

答案 1 :(得分:0)

要输出值,请尝试使用相应的实体

ä =  &auml;
ö =   &ouml;
ü =   &uuml;
ß =   &szlig;
eg Stäblistraße,  will be St&auml;blistra&szlig;e, 

答案 2 :(得分:0)

var myText = new Buffer('Stäblistraß', 'utf8')
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.write(encodeURIComponent.myText.toString('utf8'));

在浏览器端,使用decodeURIComponent()将字符串转换回来。每次都有效。