首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该把整个项目转换成UTF-8吗?

我应该把整个项目转换成UTF-8吗?
EN

Software Engineering用户
提问于 2014-01-20 10:50:26
回答 3查看 2.3K关注 0票数 2

我正在开发一个高度定制的商店软件,基于开源软件,用PHP和常用的web技术(CSS、HTML、JS)编写。

在过去的几个月/几年里,我做了大量的定制工作,并开发了一些特定的个性化特性,这对于我们分公司的成功是必不可少的。

该商店和项目文件以ISO-8859-1编码(公司位于德国)。

现在我们想在不同的国家(如瑞典、波兰、英国)推广和使用商店系统,并根据国内的需要定制。

不过,我恐怕日后可能会遇到一些编码问题,所以我的问题是:

在准备“多店”使用之前,将整个项目和环境的编码更改为UTF-8是明智的,还是应该将源代码留在原处,并在每个国家随后接近时处理(可能的)编码问题?

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2014-01-20 12:27:34

您将遇到编码问题。你可以用ISO-8859-1来处理瑞典语和英语,但不能用波兰语.您可以使用ISO-8859-2作为波兰语,但是当您迁移到不包含ISO-8859-1或ISO-8859-2的语言时,您将需要使用其他编码。

因此,最好将软件国际化,使用涵盖所有语言的UTF-8,并始终使用UTF-8。

票数 11
EN

Software Engineering用户

发布于 2014-01-20 14:12:04

从单字节转换到多字节编码( utf-8就是这样)远不是那么简单。它将要求您触摸应用程序中几乎所有的字符串(或至少检查它),以及操作它的每个函数。请记住,由于这一点,PHP 6和Perl 6已经被搁置了多年。除非(a)你有信心你能实现它,并且(b)你仔细考虑它是否值得去做,否则我不会建议你去做这个开关。

在你完全投入之前,我建议试着做一些工作,看看它进展得有多顺利。

从您所说的情况来看,显然您需要的不仅仅是ISO-8859-1,所以您确实需要国际化。但是,如果您的预期客户群可以使用ISO-8859编码系列来处理,那么您可以选择:

  1. 通过设置适当的8位编码(并将其包括在网页编码、SQL表等中)来实现国际化。
  2. 通过切换到utf-8来实现国际化。

第一个选择应该比第二个容易得多,所以仔细考虑utf-8会给你带来什么好处。

Notes

  1. 由于这是基于开源应用程序的,所以我认为这样做是对您的系统的开源基础的一个改进。这样你就可以得到社区的帮助,因为多语种的支持对每个人都有好处。如果您在专有定制版本中执行了这样的基本转换,那么将下一个开源版本合并到您的代码库中肯定会有困难。
  2. Unicode的一个真正的好处是它很容易允许多语言(多编码)站点。如果当前的系统仅限于固定的编码,那么跟踪单个系统中的多个编码将比切换到Unicode更麻烦。不过,听起来你在可预见的将来并不需要这个。
  3. 完全披露:我是从经验中说出来的,这是一次尝试转换的尝试,结果变得非常非常困难。(所以不管怎么说:也许我只是太谨慎了,你会没事的)。
票数 2
EN

Software Engineering用户

发布于 2014-01-22 10:36:32

有几件事要考虑:

在PHP方面:

  • PHP5.4在Version5.4中默认设置函数,如htmlentities/htmlspecialchars到UTF8。
  • 下个季度,默认字符集将在php.ini中强制执行到PHP5.6中的UTF8中。
  • PSR命令指出,UTF8是PHP中文件的强制性编码。
  • 所有的框架和现代库都是UTF8

在前端:

  • 浏览器制造商和W3C/WHATWG建议使用UTF8作为前端文件(css、js、html)。

在操作系统方面:

  • 所有使用的现代OSes都使用UTF8作为缺陷编码,我认为我使用的最后一个未默认设置为UTF8的操作系统是Windows (它确实支持UTF8,但不一定是默认的)
  • 您最可能使用的是LAMP堆栈,默认情况下Linux发行版是UTF8。

因此,基本上,您是在UTF8生态系统中游泳,所有现代框架、库和其他外部PHP代码默认为UTF8。PHP本身逐渐强制UTF8作为默认设置,这意味着如果您将代码保存在Latin1中,那么长期来看很可能会遇到bug。

切换到UTF8并不是很难,除非您必须处理无法控制编码的数据源,我的建议是切换,从长远来看,它将为您解决许多麻烦:)

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/224774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档