Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何设置子窗口的字符编码_Javascript_Encoding_Utf 8_Window.open - Fatal编程技术网

Javascript 如何设置子窗口的字符编码

Javascript 如何设置子窗口的字符编码,javascript,encoding,utf-8,window.open,Javascript,Encoding,Utf 8,Window.open,我正在打开一个子窗口,并用JavaScript将内容写入其中。父页面具有UTF-8字符集,但子窗口将以ISO-8859-1打开 我尝试使用document.write使用meta标记设置子页面内容类型,但似乎没有效果 launcherHtml = ' <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset

我正在打开一个子窗口,并用JavaScript将内容写入其中。父页面具有UTF-8字符集,但子窗口将以ISO-8859-1打开

我尝试使用document.write使用meta标记设置子页面内容类型,但似乎没有效果

launcherHtml = '
  <!DOCTYPE html>
  <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    </body>
  </html>
'

sandbox = window.open()
sandbox.document.open()
sandbox.document.write(launcherHtml)
sandbox.document.close()

sandbox.document.characterSet // ISO-8859-1 !!!
html='1〕
'
sandbox=window.open()
sandbox.document.open()文件
sandbox.document.write(HTML)
sandbox.document.close()文件
sandbox.document.characterSet//ISO-8859-1!!!
我也尝试过在子窗口中使用
作为标记,但结果是一样的


如何正确地将弹出窗口的字符集指定为UTF-8?

这是一种2016年末的方法,适用于多种mime类型,包括“text/plain”和“text/html”

  • 使用数据URL
  • 指定mime类型
  • 将字符编码指定为UTF-8
  • 使用
    uriEncode
  • 将UTF八位字节字符串中的“#”替换为“%23”
JavaScript示例

var launcherHtml = `
  <!DOCTYPE html>
  <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>UTF-8 example</title>
    </head>
    <body>
    <h1>Example using unicode and '#'</h1>

    Hello folks, 你好! (nǐ hǎo) in Chinese, good evening,
    こんばんは (in Japanese).
    </body>
  </html>
`;

var launcherURL = "data:text/html;charset=utf-8,"
     + encodeURI( launcherHtml).replace(/#/g,"%23");

sandbox = window.open(launcherURL)

sandbox.document.characterSet // UTF-8, yippee
var-html=`
UTF-8示例
使用unicode和“#”的示例
大家好,你好! (nǐhǎo)用中文说,晚上好,
こんばんは (日语)。
`;
var launcheurl=“data:text/html;charset=utf-8,”
+encodeURI(launcherHtml).replace(/#/g,“%23”);
沙盒=窗口。打开(启动器URL)
sandbox.document.characterSet//UTF-8,yippee

这看起来与问题的答案相同,但该问题没有公认的答案。也许其中一个答案是有效的。@EricJ。这看起来很相似,但我认为问题是在打开子窗口后父页面的编码发生了变化,而我想知道如何设置子窗口的编码。这并不能完全解决您的问题,但如果您将charset=“UTF-8”标记添加到此子页面中的任何javascript,至少javascript看起来工作正常。我遇到了一个问题,我的includeJavaScript中的UTF-8字符被误解了。