使用Windows-1252而不是UTF-8有什么问题

gfr*_*ius 6 oracle coldfusion html5 encoding utf-8

我有一个一直使用Windows-1252的测试站点.他们确实需要/使用一些符号,如平方根符号.而且他们不需要用英语以外的其他语言显示.最近我被要求将其切换为UTF-8,因为存在一些安全问题.在我将其更改为UTF-8之后,平方根和其他符号(从Oracle DB中拉出并通过ColdFusion)在生成的网页上显示正常.但是,如果我再次保存文档(发布到DB,页面刷新),符号将转换为奇怪的字符.如果我再次保存,会出现更多奇怪的角色.所以...

  1. 如果我不需要除英语以外的任何东西,坚持使用windows-1252有什么问题吗?任何安全/黑客问题?
  2. 如果您使用的是HTML5,那么不使用UTF-8会有什么影响(因为这是HTML5的默认编码)吗?
  3. 如果建议我切换到UTF-8,我如何获得当前存储的平方根符号(和其他符号)?

我已经阅读了所有这些页面,仍然有点麻烦把握这一切.希望有人来帮我澄清一下.谢谢!

  1. https://www.owasp.org/index.php/Canonicalization,_locale_and_Unicode
  2. 关于UTF-8如何产生的优秀描述,为什么它很棒,以及它解决的问题...... https://www.youtube.com/watch?v=MijmeoH9LT4
  3. http://www.w3.org/International/questions/qa-choosing-encodings "如果可以,请使用UTF-8"."事实上,HTML5规范草案目前说"鼓励作者使用UTF-8.一致性检查员可能会建议作者不要使用遗留编码.创作工具应该默认使用UTF-8来创建新文档."
  4. http://www.w3schools.com/tags/ref_charactersets.asp "对于HTML5,默认字符编码为UTF-8."
  5. http://www.joelonsoftware.com/articles/Unicode.html

***更新***

到目前为止,我感谢所有帮助,使这更容易理解. 我将简化原来的3个问题,希望能够得到一个明确的答案,所以这里是:客户不需要支持其他语言,他们将使用一些HTML5标签和一些TON的JSON/XML流量回送来自jQuery.ajax().鉴于这些信息,从安全角度来看,保持数据库设置NLS_CHARACTERSET: WE8MSWIN1252和网页设置为<CFHEADER NAME="Content-Type" value="text/html; charset=windows-1252">?有什么不对吗?谢谢.

这是另一个问题,从这个问题略微分离出来:为什么我能够使用不属于字符集的字符(windows-1252)?.

njz*_*zk2 3

Windows 1252 是众多固定大小字符集之一。Mac有自己的一套。欧洲不同地区和世界其他一些地区都有一些 ISO。其中大多数都有轻微的变化。

好处是你有一个固定大小的字符,这意味着无论如何 1 个字符 = 1 个字节。

不好的地方有:

  • 有些人可能没有安装您的编码
  • 有些人可能使用稍微不同的编码,导致很少的问题,不明显,但从长远来看非常难看
  • 您只能支持几种语言

其中包括您想要引用的任何内容。在 windows-1252 中你无法显示俄语、希腊语、波兰语......

UTF-8 是 1+ 字节的 unicode 表示的标准编码。它可以代表您可能遇到的绝大多数字符,尽管它是为基于拉丁语的语言设计的,因为其他语言需要更多的存储空间。

它用于 XML、JSON 以及您可能找到的大多数类型的 Web 服务。当您不知道要使用什么编码时,这是一个很好的默认值。它允许限制编码问题的数量,例如“我以为你使用的是Latin-1/不,我使用的是latin-9,但是Mac上的这个人使用了Roman”。如果您有超过 1 个人在处理网站内容,他们的平台上可能有不同的编码,因此您的内容在某些时候可能会混乱。

据我所知,UTF-8 是唯一可以轻松标准化人们之间无需讨论的编码的方法。

典型的例子是,如果你的网站是用 windows1252 编码的,而新开发人员有一台 Mac,你可能会遇到麻烦。

  • 另外,来自 json.org :`JSON 文本的字符编码始终是 Unicode。UTF-8 是唯一在线上有意义的编码,但也允许使用 UTF-16 和 UTF-32。 (2认同)