【问题标题】:Is it possible to run a SQLPLUS script on a file encoded as UTF-8 with BOM是否可以在使用 BOM 编码为 UTF-8 的文件上运行 SQLPLUS 脚本
【发布时间】:2012-06-01 06:04:47
【问题描述】:

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

未能移除 BOM 会产生错误:

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

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

【问题讨论】:

  • 不知道,但我会先查看客户端字符集设置,看看它是否与 UTF-8 不同。实际上,如果自动化,我会保留剥离 BOM 的流程。

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


【解决方案1】:

可以使用这样的脚本运行 SQLPLUS,但由于BOM,SQLPLUS 会在第一行指示错误。
可能您想问是否可以避免此错误 - 这是不可能的,AFAIK。 Erwin也这么认为。

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

【讨论】:

  • 遗憾的是,SQL 脚本被用作 KSH 脚本的一部分。 SQLPlus 的错误输出使 KSH 脚本出错。不过感谢您的回复。它确认 BOM 剥离是必要的。
【解决方案2】:

这已在 Oracle 中存在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 2011-11-19
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多