Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> UTF-8 Unicode (with BOM),導致SQL腳本執行報錯

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

編輯:關於android開發

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 © Android教程網 All Rights Reserved