1.sqlplus執行sql報錯:ORA-01756: quoted string not properly terminated
在SQLPLUS中執行SQL文件時發生錯誤:ORA-01756: quoted string not properly terminated
但是SQL其實是沒有問題的,找了很多原因,發現可能是由於使用TOAD導出SQL insert語句,編碼集的問題導致的。
首先在.bash_profile文件中添加環境變量指定編碼集:
export NLS_LANG=American_America.AL32UTF8
但是這樣做了還是不行,后來找到了解決方法:
使用類似Notepad++之類的文本編輯器將SQL文件的編碼轉換為
UTF-8無BOM編碼格式
結果試下來就沒有問題了。
##update 2020
感謝D-Xr
https://ask.csdn.net/questions/1052083
我的notepad最新版編碼選項中沒有UTF-8無BOM編碼的選擇,有誰能幫幫我嗎?,
UTF-8無BOM編碼就是“使用UTF-8編碼”,UTF-8-BOM是有BOM的。
2.BOM: Byte Order Mark
UTF-8 BOM又叫UTF-8 簽名,其實UTF-8 的BOM對UFT-8沒有作用,是為了支援UTF-16,UTF-32才加上的BOM,BOM簽名的意思就是告訴編輯器當前文件采用何種編碼,方便編輯器識別,但是BOM雖然在編輯器中不顯示,但是會產生輸出,就像多了一個空行,
3.
PHP文件的編碼格式是UTF-8,而且是無BOM格式,如果編寫PHP文件時用錯編碼,則輸出尤其是中文會出現亂碼。Windows自帶的記事本默認是ANSI編碼格式,另存時可將編碼改成UTF-8,但不是無BOM格式,也是無法正確輸出的。
WordPress在編寫主題和插件的PHP代碼文件時,一定要要遵循這個規定,專業的CODE編輯器可以解決編碼問題。
在用Notepad++編寫的php文件時,首先請將字符集設置正確,方法是點擊菜單“格式→以UTF-8無BOM格式編碼”。設置完成后,再編輯代碼,保存時就自動設為UTF-8 無BOM 編碼。以后再打開此文件無需再次設定。
##sample 2:
手工執行:
insert into zabbix_dg_config values ('1','2','57.12.32.29','d','3-報賬系統移動端')
pl/sql deverloper 執行成功
linux 終端執行有問題。
DB 字符集
AL32UTF8
fix1:
將perl 修改為 TF-8無BOM編碼格式 模式 ,沒用
fix2:
.重新插入后,發現有錯誤ORA-01756 ,分析得出該錯誤是由於登陸工具的字符集編碼和服務器上的編碼不一致導致。
選擇sercrt 選項/會話選項/外觀/字符編碼/ 將其由 默認 修改為 UTF8:
sqlplus 執行成功,但是perl 仍然報錯 ORA-01756
將perl 文件設置為 SET NAMES utf8 ,問題規避
手工執行腳本perl zabbix_dg_config.perl ok