是否可以为一个HTML设置两个编码?

时间:2010-06-08 02:59:26

标签: html character-encoding

有没有办法将html文件的某些部分指定为另一种编码?

(生成的)html的默认编码是utf-8。但是,要插入html中的一些包含的数据是另一种编码。它类似于:

 <div>
     the normal html in utf-8
 </div>

 <div>
     <%= raw_data_in_another_encoding %>
 </div>

有没有办法提示浏览器在另一个编码中呈现第二个<div>?感谢

3 个答案:

答案 0 :(得分:0)

不,整个文件必须有一个编码。如果您要保存一个普通的.html文件,则必须将整个文件转换为一个编码。

但是,如果您使用的是服务器端脚本语言,则始终可以将文本从一种编码转换为另一种编码。您可以将UTF-8指定为页面的编码,然后当您遇到当前编码的内容时,例如latin1,您可以在输出之前将其简单地转换为UTF-8。

当然,如何执行此操作取决于您使用的特定服务器端语言。

在PHP中,你可以这样做:

echo iconv('ISO-8859-1', 'UTF-8', $someLatin1Text);

答案 1 :(得分:0)

您可以在HTTP响应流中的任何位置发送任意编码,但通常您的客户端将无法处理它。在HTML中,不允许在同一文档中进行多种编码。甚至可能由任何现代客户优雅地处理,除非偶然。

如果您使用的是Ruby(仅基于您的命名约定进行猜测),则可以使用iconv库将字符串从一种编码转换为另一种编码。如果您正在使用其他东西,那么很可能是类似的替代方案。 PHP和Python都提供了一些基于iconv库的编码转换选项。在.Net Framework中,您可以使用Encoding类来获取合适的源编码,并使用源字节数组作为参数调用GetBytes以获取适合进一步操作的字符串。

如果您主要使用其他编码并且偶尔使用该编码支持范围之外的字符,则数字字符引用是另一种选择。但是,您通常会通过传统编码与UTF-8进行转换来保持稳定。

答案 2 :(得分:0)

我认为你不能但是如果你需要用不同的编码显示一些文字,你可以做一个“翻译功能”。我在英文页面遇到了类似的问题,我不得不添加一些西班牙语消息,所以我做了类似的事情:

function spanishEncoding (string) {
    var res = string;
    res = res.replace( /á/g, "\u00e1" );
    res = res.replace( /Á/g, "\u00c1" );
    res = res.replace( /é/g, "\u00e9" );
    res = res.replace( /É/g, "\u00c9" );
    res = res.replace( /í/g, "\u00ed" );
    res = res.replace( /Í/g, "\u00cd" );
    res = res.replace( /ó/g, "\u00f3" );
    res = res.replace( /Ó/g, "\u00d3" );
    res = res.replace( /ú/g, "\u00fa" );
    res = res.replace( /Ú/g, "\u00da" );
    res = res.replace( /ñ/g, "\u00f1" );
    res = res.replace( /Ñ/g, "\u00d1" );
    return res; };   

var newDiv = window.content.document.createElement("div"); 
newDiv.appendChild(window.content.document.createTextNode("Esta página")); //This shows "Esta p*Â!*gina"   

var anotherDiv = window.content.document.createElement("div"); 
anotherDiv.appendChild(window.content.document.createTextNode(spanishEncoding("Esta página"))); //This shows "Esta página"

希望对你有所帮助!