Sql 如何使用外部表格正确读取UTF-8字符

Sql 如何使用外部表格正确读取UTF-8字符,sql,oracle,utf-8,character-encoding,external-tables,Sql,Oracle,Utf 8,Character Encoding,External Tables,我有一个用uft8编码的CSV文件。记录的字段中有文本 文本中的字符由两个字符编码。 e、 g.用Österreich这个词 字符Ö编码为O和¨,而不是Ö 如果我在编辑器中打开文件,我会看到正确的单词Österreich 如果通过选择外部表查看文件,则会看到O¨sterreich 创建外部表时,我已经添加了访问参数CHARACTERSET AL32UTF8 是否有可能或参数告诉oracle将输出中的两个字符合并为一个?看起来oracle外部表无法将U+004F U+0308正确转换为单个Ö 如果

我有一个用uft8编码的CSV文件。记录的字段中有文本

文本中的字符由两个字符编码。 e、 g.用Österreich这个词 字符Ö编码为O和¨,而不是Ö

如果我在编辑器中打开文件,我会看到正确的单词Österreich

如果通过选择外部表查看文件,则会看到O¨sterreich

创建外部表时,我已经添加了访问参数CHARACTERSET AL32UTF8


是否有可能或参数告诉oracle将输出中的两个字符合并为一个?

看起来oracle外部表无法将U+004F U+0308正确转换为单个Ö

如果将数据库从WE8MSWIN1252迁移到AL32UTF8 UTF-8,我假设结果会很好,请参阅

或者修改CSV文件并将字符U+004F U+0308替换为U+00D6,称为


您还可以查看一下

根据Unicode标准,您应该始终使用尽可能短的代码点,即ÖU+00D6而不是O–U+004F U+0308。运行SELECT DUMP…,1016 FROM…,会得到什么。。。?确保您有字符U+0308组合分音符,而不是U+00A8分音符。很可能您的客户端应用程序没有正确显示它。许多客户端很难显示组合的Unicode字符。@WernfriedDomscheit,查询结果是Typ=1 Len=11 CharacterSet=WE8MSWIN1252:4f,a8,73,74,65,72,72,65,69,63,68如何确保此U+0308组合分录?我从c应用程序的外部表读取数据并生成pdf。只是试着去做,而文本是在奥斯特雷希之前提到的,而不是奥斯特雷希。因此,这不仅仅是我的客户的一个令人不快的问题。我们从一位客户那里得到了文件。现在这不是什么大问题,客户为我们提供了不同编码的文件。有趣的是,如果可以用外部表格解决这个问题,那么在CSV文件中,你真的有O-,实际上是两个不同的单个字符,而不是Ö。您应该以包含正确内容的方式编辑CSV文件。
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   
)