DOM的charset与屏幕上显示的不同

时间:2013-03-21 19:23:56

标签: javascript html dom character-encoding google-chrome-extension

我面临一个奇怪的问题。 html中的文本有重音符号,例如:

<p>é</p>

它在屏幕(é)中正确显示,但DOM实例内的内容不接受重音。它显示“?”字符而不是带重音的字符。

就我而言,我正在使用Chrome扩展程序在Kindle(http://read.amazon.com)中注入javascript代码,但不认为它真的相关,因为我只能使用chrome控制台看到问题。< / p>

html结构的简化版本:

<html>
    <head>
        ...
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
        ...
    </head>
    <body>
        ...
        <iframe id="KindleReaderIFrame">
            <html>
                <head>
                    ...
                    <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
                    ...
                </head>
                <body>
                    ...
                    <iframe id="column_0_frame_0">
                        <html>
                            <head>
                                <!-- Do not have the Content-Type meta tag -->
                            </head>
                            <body>
                                <!-- Text with accents that I intend to get through DOM -->
                            </bady>
                        </html>
                    </iframe>
                    ...
                </body>
            </html>
        </iframe>
        ...
    </body>
</html>

我想要的文字位于“column_0_frame_0”iframe内。

1 个答案:

答案 0 :(得分:0)

完成代码后,您还没有正确关闭正文标记,请参阅下文:

<iframe id="column_0_frame_0">
    <html>
       <head>
        <!-- Do not have the Content-Type meta tag -->
        </head>
        <body>
            <!-- Text with accents that I intend to get through DOM ->
        </bady>
    </html>
</iframe>

其次,如果您在iFrame或AJAX中加载内容,它不足以在元标记中设置字符集,有时它取决于您用来创建代码的IDE。

检查:

  1. 在Notepad ++中打开相同的代码
  2. 使用charset UTF-8(默认ANSI)保存内容。
  3. 在本地服务器上运行代码,而无需在任何其他IDE中打开该文件。
  4. 现在,您将能够在DOM和屏幕中正确渲染重音符。