0

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

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

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

那么有没有办法处理这个问题呢?如果它是任何其他格式,我们可以在 oracle 中打开一个(CSV)文件并将其保存为UTF-8格式吗?如果需要更多信息,请告诉我。

感谢期待。

4

2 回答 2

0

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

“1252(ANSI - 拉丁语 I)”是什么意思?Windows-1252 和 ISO-8859-1 不相等,请参阅此处的区别:ISO 8859-1 vs. ISO 8859-15 vs. Windows-1252 vs. Unicode (抱歉发布德语维基百科,但英文版不展示这么漂亮的桌子)

于 2015-02-12T18:44:13.827 回答
0

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

fix_latin < input.csv > output.csv

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

于 2015-02-18T02:07:26.293 回答