程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> UTF-8 Unicode (with BOM),導致SQL腳本執行報錯

UTF-8 Unicode (with BOM),導致SQL腳本執行報錯

編輯:關於PHP編程

UTF-8 Unicode (with BOM),導致SQL腳本執行報錯


關於帶BOM和不帶BOM的區別,大家可以看一下知乎上的討論。
鏈接:「帶 BOM 的 UTF-8」和「無 BOM 的 UTF-8」有什麼區別?

最近開發過程中遇到,windows下編寫的SQL文件,在linux下執行時,總是報錯。

在文件的開頭,無論是使用中文注釋還是英文注釋,甚至去掉注釋,也會報SP2-0734:unknown command beginning"?declare..."-restofline ignored. 的錯誤。
如下是文件開頭部分
  1. --create tablespace
  2. declare
  3. v_tbs_name varchar2(200):='hytpdtsmsshistorydb';
  4. begin
報錯如下:
  1. SP2-0734: unknown command beginning "?--create ..." - rest of line ignored.


  2. PL/SQL procedure successfully completed.
網上沒有找到類似問題的解決辦法,且文件編碼確認已經更改為utf-8,該問題困惑了我很久。
最後查看一下BOM與 no BOM的區別,嘗試更改為no BOM,居然就沒有再出現錯誤。

查看文件的編碼,正常文件與報錯文件的區別在於:with BOM
  1. [oracle@localhost Oracle_proc]$ file *
  2. bill_query_proc.sql: UTF-8 Unicode C program text
  3. crt_tab_hytpdtsmsshistorydb.sql: UTF-8 Unicode(with BOM)text
可以通過兩種方法修改文件的編碼類型:
1.使用VI修改文件的編碼類型
:set encoding = utf-8
:set nobom

2.使用windows下的ultraedit,另存為 UTF-8 -無 BOM

修改完成後,無論使用中文,還是英文,或者去掉注釋,都能正常執行。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved