是否可以在使用BOM编码为UTF-8的文件上运行SQLPLUS脚本

时间:2012-05-25 16:26:47

标签: oracle utf-8 plsql byte-order-mark

我正在尝试运行从大量来源自动生成的脚本集合。不幸的是,其中一些已生成为带有BOM的UTF-8。我已经建立了一个自动删除BOM的系统,但它有点混乱。

无法删除BOM会产生错误:

SP2-0042: unknown command "" - rest of line ignored.

是否可以在具有BOM的脚本文件上运行SQLPLUS?

2 个答案:

答案 0 :(得分:4)

可以使用此类脚本运行SQLPLUS,但由于BOM,SQLPLUS将在第一行显示错误。
可能你想问一下你是否可以避免这个错误 - 它是不可能的,AFAIK。 Erwin也这么认为。

您可以通过生成第一行为空的文件来解决丢失任何信息的问题。然后你可以忽略这个错误。

答案 1 :(得分:3)

这已经成为甲骨文6年多来的一个漏洞,但看起来他们并不想修复它。

他们的'推荐解决方法'(Doc ID 788156.1 C.6节)是剥离BOM或使您的第一个脚本行成为评论,然后忽略此错误。

  

SP2-0042:未知命令“∩╗┐” - 忽略其余行。

或者

  

SP2-0734:未知命令开头“ - Commen ...” - 其余行   忽略。

Bug 13515585 Details(需要OTN登录):

Bug 13515585: ADD SUPPORT FOR THE UTF-8 BOM IN SQLPLUS
Bug Status: Internal (Oracle) Review 
Created: 19-Dec-2011 
Updated: 29-Sep-2015