如何更改Oracle 11g r2 Express版中的字符集

ale*_*asm 9 oracle plsql oracle11g

我必须在Oracle 11g r2 Express实例中将字符集从AL32UTF8更改为WE8MSWIN1252 ...我尝试使用以下命令:

ALTER DATABASE CHARACTER SET WE8MSWIN1252;
Run Code Online (Sandbox Code Playgroud)

但它没有说MSWIN1252不是AL32UTF8的超集.然后我发现了一些关于CSSCAN的文章,这个工具似乎在Oracle 11 Express中不可用.

http://www.oracle-base.com/articles/10g/CharacterSetMigration.php

任何人都知道如何做到这一点?提前致谢

编辑 澄清一点:真正的问题是我正在尝试将数据导入到一个表中,该表的列定义为VARCHAR(6字节).导致问题的字符串是'eq.mês',它在MSWIN1252中需要6个字节,在UT8中需要7个字节

Jus*_*ave 5

你不能.

11g的Express Edition仅使用UTF-8字符集.如果你想回到10g的快递版,有一个使用Windows-1252字符集的西欧版本.与其他版本不同,Oracle不支持Express Edition中的所有字符集,也不支持更改现有XE数据库的字符集.

为什么您认为需要更改数据库字符集?除了可能需要更多存储空间来支持Windows-1252范围上半部分中的字符(通常没有特别大量使用)之外,UTF-8数据库没有太多缺点.

  • 我发现Oracle Express DOES支持WE8MSWIN1252 ......我所要做的就是运行`createDb -dbchar WE8MSWIN1252` (5认同)
  • @alessandroasm - 你正遇到太空问题?您应该能够将列声明为`VARCHAR2(6 CHAR)`以分配6个字符而不是6个字节,或者将`NLS_LENGTH_SEMANTICS`设置为"CHAR",以便`VARCHAR2(6)`分配6个字符而不是6个字节.或者您可以只增加存储非ASCII数据的所有字符列的大小. (3认同)
  • @alessandroasm - 你可以,但这不是我建议的.Oracle明确尝试限制XE数据库的可用字符集集,因此完全有可能通过尝试解决某些问题或者某些未来的更新或脚本将假定数据库字符集为UTF-8而破坏某些内容.会导致数据库出现问题. (2认同)