记事本文件中的字符在使用 utl_file.get_line 过程读取时转换为特殊字符



我编写了一个程序来从文本文件中读取数据,并使用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 编程。

最新更新