2009-08-28 22 views
1

我們有這樣的包含「中國傳統民」字和英文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 

而且我在這個數據庫中的* .sql文件導出所有數據爲「ANSI」編碼,當我在同一臺計算機上打開它時,所有中文字符都已損壞。

當我將其導入到另一個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」編碼將「傳統中文」或「簡化中文」保存到文本文件中,而且這些字符不會被損壞。但有時它會...?爲什麼 有人可以解釋所有這些奇怪的事情?

在此先感謝!

回答

0

漢字被「損壞」的原因僅僅是因爲它們缺少字符集「ANSI」(windows-1252)。該字符集只包含拉丁字符。

偶然的情況下,你有時可以讓它們被某些應用程序識別,因爲一些應用程序足夠聰明,可以理解你使用了錯誤的字符集(即他們猜測你錯了,例如記事本)。在你的情況然而,你應該:

  • 使用的字符集,包括中國漢字,即:UTF-8,
  • setup your client application使用的字符集,包括中國漢字(NLS_LANG=AMERICAN_AMERICA.UTF8)和使用一個爲你工作的實用程序(SQL * Loader,數據庫鏈接...)
相關問題