2011-04-29 178 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

相关问题