【问题标题】:Convert ansi script to unicode automatically自动将 ansi 脚本转换为 unicode
【发布时间】:2011-06-03 22:30:38
【问题描述】:

我们有一组脚本,用于 Oracle 和 SQL Server。 这些脚本是 ANSI。

现在我们也想支持 Unicode 数据库。但这需要对我们的脚本进行一些修改。例如,使用不同的数据类型并在字符串前加上“N”。

有人知道是否有工具可以将脚本与 unicode 相互转换吗?我使用多个搜索引擎找不到任何东西。

【问题讨论】:

  • 请注意,ANSIUnicode 都不是实际的字符编码。我假设您正在谈论从单字节字符集(例如 ISO-8859-1 或 Windows-1252)切换到多字节字符集(例如 UTF-8 或 UTF-16)。我提到这一点是因为我注意到有许多开发人员甚至不知道他们的应用程序使用什么字符集,这是一个基本概念。
  • 感谢您的回复。我确实谈到了从单字节字符集切换到多字节字符集。

标签: sql sql-server oracle unicode


【解决方案1】:

Oracle 中有两种方法。如果您对数据库服务器有完全控制权,我建议您只需更改默认字符集,即NLS_CHARACTERSET 参数的值,其余数据库内容保持不变。使用常规 CHAR/VARCHAR2 列可提供更广泛的功能集(例如全文索引)。

如果不能完全控制服务器,或者您需要与旧的非多字节感知应用程序保持兼容,则必须检查 NLS_NCHAR_CHARACTERSET 参数的值并更改所有数据库内容以使用NCHAR/NVARCHAR2 数据类型。

这是另一个突出差异的问题:

Difference between VARCHAR2(10 CHAR) and NVARCHAR2(10)

最后但同样重要的是,这里有一些有用的查询:

SELECT * FROM NLS_DATABASE_PARAMETERS;
SELECT * FROM NLS_INSTANCE_PARAMETERS;
SELECT * FROM NLS_SESSION_PARAMETERS;

注意:对于迁移工具或 SQL Server 部件,我无能为力,抱歉。

【讨论】:

  • 再次感谢。我想我需要改写我的问题。你的答案很清楚,但我的问题不是,我认为 :-) 我对数据库和 unicode 也比较陌生。
  • @Rhapsody 我承认我只回答了你问题的一小部分。我的意思是Oracle版本可能不需要任何更改。
猜你喜欢
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2012-05-06
  • 2013-08-21
  • 1970-01-01
相关资源
最近更新 更多