如何将重音字符从JavaScript传递给HTML?

时间:2015-02-22 13:16:48

标签: javascript html

在JavaScript中,我创建了一个字符串,其中包含重音字符,例如“ò”或“à”,例如“òà”

我似乎无法在html中创建显示重音字符的文本节点:如果我直接传递它们,我会得到“黑色菱形中的白色问号”;如果我用相应的html实体替换重音字符,我会逐字打印实体。
这个功能

function showAccents() {
  s1="ò à";
  s2 = s1.replace(/ò/, "ò").replace(/à/, "&agrave");;
  var eD = document.getElementById("accent1");
  var eHT1 = document.createTextNode(s1);
  var eHT2 = document.createTextNode(s2);
  eD.appendChild(eHT1);
  eD.appendChild(eHT2);
}

制作以下文字:

  

ò& agrave

如何转换字符串以获取HTML中的重音字符?

2 个答案:

答案 0 :(得分:4)

您可能缺少网页编码。确保您的HTML包含以下内容:

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

或者这个(HTML5):

<meta charset="utf-8">

修改

现在看来问题是你的Javascript文件的编码。它也需要是Unicode(例如编码为UTF8),就好像它以非Unicode编码保存一样,你可能会被浏览器误解,而浏览器可能会用不同的编码读取这些。只需在文本编辑器中打开它并将其保存为UTF8(这样做会在文件的开头包含一个BOM,它将指定其编码,解决问题)

答案 1 :(得分:3)

原来我的xemacs用ISO-8859-1编码;当前版本不能轻易设置为UTF-8。

解决方法是在xhtml的标题中将编码信息从“utf-8”更改为“iso-8859-1”:          

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>  
  <meta name="http-equiv" content="Content-type: text/html; charset=ISO-88591"/>

  <script type="text/javascript" src="js/conjutils.js" charset="iso-8859-1" />
  <script type="text/javascript" src="js/xmlutils.js" charset="iso-8859-1" />
  <link rel="stylesheet" type="text/css" href="css/conjugation.css" />    
  <title>Conjugation</title>

</head>

现在我可以在我的js文件中将字符串设置为'àò',浏览器将正确显示它。