我有一个用uft8编码的CSV文件。记录的字段中有文字
在文本中是用两个字符编码的字符。
例如Österreich
一词中
字符Ö
编码为O
和¨
,而不是Ö
如果我在编辑器中打开文件,则看到正确的单词Österreich
,
如果我通过选择外部表来查看文件,那么我会看到O¨sterreich
。
创建外部表时,我已经添加了访问参数CHARACTERSET AL32UTF8
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
CHARACTERSET AL32UTF8
STRING SIZES ARE IN BYTES
skip 1
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LDRTRIM
MISSING FIELD VALUES ARE NULL
)
是否有可能或一个参数告诉oracle将输出中的两个字符合并为一个?
答案 0 :(得分:1)
看起来Oracle外部表无法将U+004F U+0308
正确转换为单个Ö
如果您将数据库从WE8MSWIN1252
迁移到AL32UTF8
(UTF-8),我认为结果会很好,请参阅https://docs.oracle.com/database/121/NLSPG/ch11charsetmig.htm#NLSPG011
或修改CSV文件,并用U+004F U+0308
替换字符U+00D6
,称为Unicode Normalization