如何在oracle中打开(CSV)文件并将其保存为UTF-8格式(如果它是其他格式)

时间:2015-02-12 16:24:46

标签: oracle csv unicode utf-8 extended-ascii

任何人都可以就下面的问题告诉我。 我有一个oracle程序,它将.CSV文件作为输入并将处理它。我们现在面临的问题是,当输入文件中出现 扩展ASCII字符 时,它会修剪该特殊字符后面的下一个字母。

我们使用文件实用程序函数Utl_File.Fopen_Nchar()打开文件,使用Utl_File.Get_Line_Nchar()来读取文件中的字符。该程序的编写方式应该能够处理输入文件中的多种语言(Unicode字符)。

在分析中发现,当CSV文件的字符编码为UTF-8时,即使存在扩展的ASCII字符和Unicode字符,它也能成功处理文件。但有时我们会以 1252(ANSI - Latin I) 格式获取该文件,这会导致扩展ASCII字符的修剪问题。

那么有什么方法可以解决这个问题吗?我们可以在oracle中打开(CSV)文件并将其保存为 UTF-8格式 ,如果它是以其他格式存储的吗? 如果需要更多信息,请告诉我。

感谢您的期待。

2 个答案:

答案 0 :(得分:0)

问题是当您不知道CSV文件的编码保存时,也无法确定任何转换。你会搞砸你的CSV文件。

你是什么意思" 1252(ANSI - Latin I)"? Windows-1252和ISO-8859-1不相等,请看这里的区别:ISO 8859-1 vs. ISO 8859-15 vs. Windows-1252 vs. Unicode (很抱歉发布德语维基百科,但英文版没有显示这么好的表)

答案 1 :(得分:0)

您可以使用fix_latin命令行工具将ASCII / Latin-1 / CP1251 / UTF8的未知混合文件转换为UTF8:

fix_latin < input.csv > output.csv

fix_latin实用程序是一个简单的Perl脚本,随CPAN上的Encoding::FixLatin模块一起提供。