我编写了一个程序来从文本文件中读取数据,并使用oracle中的UTL_FILE包将其加载到表中。在阅读几行时,一些字符被转换为特殊字符,例如:
string in file = 63268982_GHC –EXH PALOMARES EVA
value entered into database = 63268982_GHC âEXH PALOMARES EVA
我尝试使用转换功能,但没有实现任何效果。
我的 Oracle 版本是 11gR2,它使用 nls 字符集WE8ISO8859P1。因为这些字符串表示物理文件名,所以当我尝试与文件名匹配时,我会遇到不匹配。
我尝试将存储在 WE 字符集中的 Oracle 中的值重新转换为 ascii,如下所示:
convert('63268989_GHC âEXH PALOMARES','us7ascii','WE8ISO8859P1')
但是结果与阅读时文本文件中的结果不同。任何人都可以建议如何克服这个问题。
文件中的–
字符不是常规连字符(-
,chr(45)
(,而是存储为三个字节的破折号/U + 2013,十进制226,128,147或十六进制e2,80,93。单独解释而不是单个多字节字符,它们对应于此处所示的–
。
尝试使用utl_file.fopen_nchar
打开文件并使用utl_file.get_line_nchar
读取行。
Oracle 11gR2 数据库全球化支持指南:使用 Unicode 编程。