【问题标题】:How transport data between different database encoding?如何在不同的数据库编码之间传输数据?
【发布时间】:2009-08-28 08:23:52
【问题描述】:

我们有这样一个包含“繁体中文”字符和英文的oracle数据库,环境是:

PARAMETER   VALUE
NLS_LANGUAGE    AMERICAN
NLS_TERRITORY   AMERICA
NLS_CURRENCY    $
NLS_ISO_CURRENCY    AMERICA
NLS_NUMERIC_CHARACTERS  .,
NLS_CHARACTERSET    WE8PC850
NLS_CALENDAR    GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE   AMERICAN
NLS_SORT    BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT    DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT  HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY   $
NLS_COMP    BINARY
NLS_LENGTH_SEMANTICS    BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET  UTF8
NLS_RDBMS_VERSION   9.2.0.4.0

我把这个数据库中的所有数据都导出为“ansi”编码的*.sql文件,当我在同一台电脑上打开它时,所有的汉字都损坏了。

当我将它导入另一个 oracle 并且环境是:

> NLS_LANGUAGE|AMERICAN
> NLS_TERRITORY|AMERICA NLS_CURRENCY|$
> NLS_ISO_CURRENCY|AMERICA
> NLS_NUMERIC_CHARACTERS|.,
> NLS_CHARACTERSET|WE8MSWIN1252
> NLS_CALENDAR|GREGORIAN
> NLS_DATE_FORMAT|DD-MON-RR
> NLS_DATE_LANGUAGE|AMERICAN
> NLS_SORT|BINARY
> NLS_TIME_FORMAT|HH.MI.SSXFF AM
> NLS_TIMESTAMP_FORMAT|DD-MON-RR
> HH.MI.SSXFF AM
> NLS_TIME_TZ_FORMAT|HH.MI.SSXFF AM TZR
> NLS_TIMESTAMP_TZ_FORMAT|DD-MON-RR
> HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY|$
> NLS_COMP|BINARY
> NLS_LENGTH_SEMANTICS|BYTE
> NLS_NCHAR_CONV_EXCP|FALSE
> NLS_NCHAR_CHARACTERSET|AL16UTF16
> NLS_RDBMS_VERSION|10.2.0.1.0

所有中文字符仍然损坏。 有人可以给我任何建议吗?

我还有一个问题,为什么有时我们可以将“繁体中文”或“简体中文”保存到具有“ANSI”编码的文本文件中,并且字符不会被损坏。但有时它会... ??为什么 有人可以解释所有这些奇怪的事情吗?

提前致谢!

【问题讨论】:

    标签: database oracle encoding utf-8


    【解决方案1】:

    中文字符被“损坏”的原因仅仅是因为它们不存在于字符集“ANSI”(windows-1252)中。此字符集仅包含拉丁字符。

    您有时可以让某些应用程序识别它们,因为某些应用程序足够聪明,可以理解您使用了错误的字符集(即他们猜测您错了,例如记事本就是这种情况) .但是,在您的情况下,您应该:

    • 使用包含中文字符的字符集,即:UTF-8,
    • setup your client application 使用包含中文字符的字符集 (NLS_LANG=AMERICAN_AMERICA.UTF8) 并使用为您工作的实用程序(SQL*Loader、数据库链接...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 2011-03-04
      • 1970-01-01
      相关资源
      最近更新 更多