【问题标题】:Concatenating javascript files with different encodings连接具有不同编码的javascript文件
【发布时间】:2012-09-26 15:10:16
【问题描述】:

是否有关于如何处理多种编码的通用/最佳实践方法?由于我网站上的 js 代码对于每个页面都大致相同,因此将所有内容放入一个文件中是有意义的,但是我遇到了很多奇怪的问题,因为有些文件是 UTF-8、一些 ASCII、一些有 CLRF 和一些RF 结尾。

编辑 到目前为止,我使用过 cat,但据我所知,cat 保留了原始编码。

【问题讨论】:

  • 您可能应该准确描述您遇到的问题。 ASCII(即代码在 0-127 范围内的字符)有效的 UTF-8,您无法区分两者,如果与实际的 UTF-8 文本连接不会导致问题。 Javascript 将CRLF 都解释为行终止符,因此混合行尾样式也不应该出现任何问题。

标签: javascript encoding utf-8 ascii concatenation


【解决方案1】:

您绝对应该针对所有文件进行统一编码;如果 UTF-8 文件在其中,那么 UTF-8 就是要走的路。 ASCII 在这里不是问题(ASCII 是 UTF-8 的子集,因此您可以毫无问题地连接 UTF-8 和 ASCII 文件),但其他编码(latin-1 等)是。您肯定希望避免在单个文件中混合编码。

您还应该规范您的行尾(所有 CRLF 或所有 LF,但不能同时使用两者;当然不是在单个文件中 - 这很难看)。在 Unix 系统上,LF 是标准,所以这可能是您应该使用的。

cat 根本不关心编码,它只是将文件粘贴在一起,所以如果你连接具有不同编码/行结尾的文件,它搞砸。

【讨论】:

  • JS 不关心行尾样式,因为CRLF 都被视为行终止符(ECMA-262,第 7.3 节)。该文件可能看起来搞砸了,但 JS 解析它应该没有问题。
  • @lanzz:当然可以,但它仍然很难看,谁知道是否只有 JavaScript 需要处理文件?一些文本编辑器在看到混合换行文件时会感到非常困惑。
  • 后续问题:您将使用什么进行转换? iconv 是要走的路吗?它真的转换所有文件吗?我已将一些 ASCII 文件转换为 UTF-8,但运行 file 仍将其显示为 ASCII。
  • 您不需要将 ASCII 转换为 UTF-8;任何有效的 ASCII 文件都是有效的 UTF-8 文件。只有其他编码(正如我在回答中提到的)会导致问题。
  • 如果你是在 js 中做的;文件 => 文本区域 => 文本区域值
猜你喜欢
  • 2021-09-07
  • 2013-08-07
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 2020-03-07
相关资源
最近更新 更多