我们正在安装已配置的 Oracle 数据库,他们询问我们希望使用哪种字符编码。该应用程序(Java 语言)仅提供英文版本,但用户来自世界各地。
不使用 UTF8 或其他 unicode 字符集有什么动机吗?
答案1
你应该做出两个选择:
作为看到这里:
Oracle 建议所有新系统部署都使用 Unicode。
国家字符集只能是 Unicode:UTF-8 或 UTF-16。因此,为两者选择相同的字符集将是多余的...
我的建议(你说你的申请只有英文):
- 要求您的数据库字符集为UTF-8。
- 要求您的国家字符集为UTF-16。
以下是我对您的架构定义的一般建议。逐表逐列(我在这里取VARCHAR2
/NVARCHAR2
示例):
- 如果你的列可以包含世界上的任何字符(例如用户输入), 做了
NVARCHAR2
。 - 如果您可以控制要存储的内容(英语),那么就这样做
VARCHAR2
。
答案2
但请注意:
不要使用名为 UTF8 的字符集作为数据库字符集,除非为了与 Oracle Database 8.1.7 及更早版本中的客户端和服务器兼容而需要,或者除非您的应用程序供应商明确要求。尽管名称非常相似,但 UTF8 并不是 Unicode 编码 UTF-8 的正确实现。如果在需要 UTF-8 处理的地方使用 UTF8 字符集,可能会发生数据丢失和安全问题。对于与 Web 相关的数据(例如 XML 和 URL 地址)尤其如此。
Oracle 建议使用 AL32UTF8作为数据库字符集。AL32UTF8 是 Oracle 对 Unicode 标准的 UTF-8 编码的名称。
答案3
不使用 UTF8 或其他 unicode 字符集有什么动机吗?
只有一个;您有一个现有的数据集,但您无法保证当前的字符集编码。
在这种情况下,您可能希望补救该问题并仍然使用 UTF8。
答案4
半开玩笑:是的,您无法再与不了解 UTF 的老客户建立连接。