我有不同的SQL文件集,其中有法文/西班牙文和其他語言字符。在Windows中,我們能夠看到特定的語言字符,以及何時轉移到Linux,我看到怪異的字符。WINDOWS到Linux字符集問題
我知道windows使用不同的字符集,如WINDOWS-1252,WINDOWS-1258和iso-8859-1。
如何在Linux中更改與Windows相似的字符集,以便在觸發Linux查詢時不會在數據庫中插入奇怪的字符?
在此先感謝。
我有不同的SQL文件集,其中有法文/西班牙文和其他語言字符。在Windows中,我們能夠看到特定的語言字符,以及何時轉移到Linux,我看到怪異的字符。WINDOWS到Linux字符集問題
我知道windows使用不同的字符集,如WINDOWS-1252,WINDOWS-1258和iso-8859-1。
如何在Linux中更改與Windows相似的字符集,以便在觸發Linux查詢時不會在數據庫中插入奇怪的字符?
在此先感謝。
在Windows中,我們可以看到具體的語言文字
可以在記事本打開它++和查看文件正在使用什麼編碼,你也可以將其轉換爲UTF-8。
不,您可以看到Notepad ++正在猜測編碼。要知道該文件正在使用哪種編碼,您必須向寫信的人諮詢。 –
這仍然是有用的建議,因爲Notepad ++可用於更改它。除非猜測錯誤,否則大部分時間都應該起作用。但這比猜測自己好。 – simbabque
我正在嘗試使用perl,sqlplus自動化FB部署。我們不希望DB團隊告訴我們他們正在使用的字符集。工作流程是WINDOWS-> SCM-> Linux-> DB – user1676886
如果我正確地理解了這個問題,那麼您就會在包含非ASCII字符的各種窗口編碼中生成SQL腳本。你想在Linux上執行這些腳本。
我想你會想要無損地將文件轉換爲你的linux SQL解析器可以處理的東西,可能是unicode UTF-8。這種轉換可以使用iconv(命令行實用程序,我相信也有庫)完成。
一個挑戰是你是否知道每個文件的原始編碼是什麼,因爲這不一定會被自動檢測到......如果你能讓腳本文件的作者爲腳本提供指定的編碼。
我試圖在Linux中同時使用iconv和recode命令,但這兩個命令並未解決我的問題。因爲我愛德來確定源編碼。順便說一句,我正在嘗試使用perl,sqlplus自動化數據庫部署。 – user1676886
正如其他人所提到的那樣,最好*知道源編碼,因爲自動檢測是不完美的。但是有些實用程序和庫試圖做到這一點:嘗試查看「chardet」,我相信有各種庫和端口。 –
歡迎來到本網站!查看[tour](https://stackoverflow.com/tour)瞭解更多關於這裏主題的內容。您可能會在[DB管理員](https://dba.stackexchange.com/)網站上運氣更好。 – cxw
這是Perl的標籤,所以我猜你正在使用DBI?顯示您的錯誤代碼,導致它應該像讀取輸入文件時更改編碼一樣簡單。另外,你使用的是什麼數據庫服務器? – ikegami
我正在使用sqlplus以及perl代碼而不是DBI模塊,因爲它不僅僅是插入,更新並具有過程,觸發器和視圖。 – user1676886