每當我嘗試保存與連字符在句子中的任何記錄,然後它在oracle中保存爲倒置問號。這只是當我執行此插入查詢與其他查詢組合並執行所有在一次使用SQL加應用程序。但是,當我使用SQL開發人員單獨執行插入查詢時,這不會發生。爲什麼會發生這種情況,這有什麼解決方案?爲什麼在嘗試在oracle中保存連字符( - )時會反轉問號(¿)?如何擺脫這一點?
0
A
回答
2
SQL Developer是基於Java的,它不使用NLS_LANG
設置,但SQL * Plus的設置,因此您必須正確設置NLS_LANG
。
您沒有告訴我們您使用了哪個連字符,請參閱MT0的答案。在你的問題中,你使用了ASCII碼爲U+002D (CHR(45))
- 肯定這會產生任何問題。
的SQL * Plus繼承字符從調用命令行設置,您必須設置NLS_LANG
因此,例如像這樣:
C:\>chcp 1252
Active code page: 1252
C:\>set NLS_LANG=.WE8MSWIN1252
C:\>sqlplus ...
SQL> SELECT UNISTR('\002D') AS HyphenMinus,
2 UNISTR('\2010') AS Hyphen,
3 UNISTR('\2011') AS NonBreakingHyphen,
4 UNISTR('\2012') AS FigureDash,
5 UNISTR('\2013') AS EnDash,
6 UNISTR('\2014') AS EmDash,
7 UNISTR('\2015') AS HorizontalBar,
8 UNISTR('\2043') AS HyphenBullet
9 FROM DUAL;
H H N F E E H H
- - - - - - - -
- - - ¿ – — ¿ ¿
SQL>
你看FigureDash,HorizontalBar和HyphenBullet不受CP1252支持,根據您的要求你必須選擇另一個字符集,例如UTF-8
C:\>chcp 65001
Active code page: 65001
C:\>set NLS_LANG=.AL32UTF8
C:\>sqlplus ...
看一看this answer得到一些更多有關NLS_LANG
設置。
1
有多種不同的連字符/破折號/負字符:
SELECT UNISTR('\002D') AS HyphenMinus,
UNISTR('\2010') AS Hyphen,
UNISTR('\2011') AS NonBreakingHyphen,
UNISTR('\2012') AS FigureDash,
UNISTR('\2013') AS EnDash,
UNISTR('\2014') AS EmDash,
UNISTR('\2015') AS HorizontalBar,
UNISTR('\2043') AS HyphenBullet
FROM DUAL
只有-
(CHR(45)
)是基ASCII字符集內。如果您的列僅支持此功能,則擴展字符集內的字符可能無法正確顯示。
Check what character set your database is using,你可能需要:
- change the database's character set到支持您所使用的字符的東西;或
- 使用
NVARCHAR2
數據類型而不是VARCHAR2
- 只有在輸入使用支持的字符(並拒絕包含在擴展字符集chatacters任何字符串)。
+1
由於SQL-Developer正確插入字符,所以第一個和第二個提議不應有效。顯然,數據庫和使用的數據類型正確地支持所需的字符。 –
相關問題
- 1. VisualStudio中 - 如何擺脫這種字符
- 2. 爲什麼在嘗試在Oracle中保存圖片時出現ORA-00936錯誤?
- 3. 我如何擺脫這個錯誤現在一直在嘗試一天?
- 4. 如何擺脫這一行?
- 5. 如何擺脫這個unicode字符?
- 6. 如何擺脫這些非法字符?
- 7. 如何調試時,CakePHP的型號::保存()不會嘗試
- 8. 爲什麼contentEditable的脫字符號在Firefox,IE中縮小時會消失?
- 9. 擺脫轉義字符在PHP
- 10. 爲什麼在嘗試保存時檢測到idEscala爲空?
- 11. 當我嘗試保存圖像時,爲什麼會出現NullPointerException?
- 12. 如何擺脫不存在
- 13. 如何擺脫vim中的^ I符號?
- 14. 擺脫符號零
- 15. 如何在從xsl讀取字符串時擺脫'\ n'字符?
- 16. 如何擺脫雙引號?
- 17. 爲什麼我在嘗試使用點積時會得到TypeError?
- 18. 爲什麼這些字符串不會在C++中連接?
- 19. PHP - 爲什麼我不能擺脫這個會話ID cookie?
- 20. 如何在使用python的點擊庫時擺脫這種TypeError?
- 21. 在mysql中擺脫撇號?
- 22. 「englify」字符串,擺脫特殊符號
- 23. 使用mod_rewrite擺脫問號
- 24. 如何在groovy中串接字符串時擺脫「null」?
- 25. 如何擺脫反彈時的發光
- 26. 擺脫文本視圖中的問號
- 27. 試圖擺脫一些字符函數utf8_encode的不會解決
- 28. 我如何擺脫點!
- 29. 如何擺脫一段時間的嘗試/除了一段時間? [Python]
- 30. 如何擺脫這個反應的「唯一鍵」錯誤
你在SQLPlus中得到了什麼「選擇」 - 「雙重結果」;「命令?默認轉義可能存在一些問題,我認爲連字符不應該是默認的特殊字符。 – Galcoholic
當我嘗試在sql plus中獲得' - '的結果時,它返回0條記錄。 – VasuDev
鍵盤上的連字符是ASCII 45,並且受所有字符集支持。你必須粘貼延長的連字符或有趣的東西。 – sandman