2011-04-29 29 views
1

是否可以在字符集爲ISO-8859-1的Oracle數據庫中插入「€」(作爲VARCHAR)?對ISO-8859-1 Oracle數據庫中的「€」字符進行編碼

我想從ISO-8859-1轉換到ISO-8859-15字符集(甚至WINDOWS-1252字符集將適合)我的數據庫,以便將「€」存儲在我的數據庫中,但有人告訴我用數據庫的ISO-8859-1字符集,它可能直接存儲我的「€」字符。

所以問題是,目前,我試圖找到ISO-8859-1數據庫的解決方案>將有一個意思插入「€」(取決於客戶端/驅動程序的字符集/等等,但不取決於數據庫的字符集)

你對此的觀點是什麼?

如果是這樣,那麼爲什麼我們必須爲Oracle數據庫定義一個字符集?一個人告訴我,這只是爲了「知道需要多少字節來編碼字符」(因此選擇一個字符集相當於只爲Oracle選擇一些位來編碼每個字符)結論:ISO-8859 -1 = ISO-8859-15-WINDOWS = 1252在某些方面對於Oracle來說,因爲所需的位數是相同的......)

我希望我(幾乎)清楚..但是在我看來我想我會永遠能夠執行INSERT(使用「€」),並選擇和檢索ISO-8859-1數據庫上我的「€」 ......

感謝您閱讀我。 。

(PS:數據庫爲10g版本)

+0

參見:是否有存儲Unicode文本中設定爲「US7ASCII」 Oracle數據庫的方式(http://stackoverflow.com/q/2681180/119634) – 2011-04-29 14:19:57

回答

4

字符未在ISO-8859-1中分配。因此你無法代表它。與ISE-8859-15中相同的字節用於表示¤(貨幣通用符號)。

Source

Oracle需要知道在什麼字符集,將編碼數據庫用於以下目的:

  • 知道多少字節來存儲每個字符
  • 能夠執行轉換時客戶端NLS不同(某些客戶端以UTF-8發送查詢,數據有效的ISO-8859-1:Oracle可以將其翻譯)。
  • 分析列內容的軟件包(如全文搜索)對於它是什麼字符很敏感。
+0

我沒有真正進入數據庫,但是我相信用'ORDER BY'進行正確的排序也需要知道編碼。 – ollb 2011-04-29 13:59:28

+0

@Gnaoo:'ORDER BY'依賴於NLS_SORT客戶端設置。 – Benoit 2011-04-29 14:48:15

相關問題