修改系統的編碼方式

2021-07-22 05:47:19 字數 1893 閱讀 6204

專案裡有這樣的要求,使用者通過瀏覽器配製一部分資訊,這部分資訊不存在資料庫而存在linux下磁碟檔案中。對我來說倒是沒有什麼區別,不就是資料嘛,怎麼存不用我管,我只要能塞進去取出來就可以了。然而在執行的時候出現了兩個問題

1.中文資訊出現了亂碼

2.file too many open

一、分析:

1.出現亂碼就只能是編碼的問題了,有可能有兩種情況,一種是編碼不一致,另一種是不支援設定的編碼,因為我在專案裡面都是用utf8的編碼,所以不存在設定了不支援的編碼的問題,因此推斷出是系統編碼引起的。linux 下輸入export |grep lang 結果是en 果然如此。

二、初步解決方式:

1.runtime 系統命令 ulimit -n 8196

2.runtime 系統命令 export lang="en_us.utf-8"

本來以為解決了,但是問題依然存在為什麼呢?程式裡面設定完之後馬上又查詢了一遍,竟然沒有設定上?奇怪?沒出現問題呀,問了下公司搞linux開發的同事原來這些是程序相關的,我也沒有啟動新的程序呀,哦,一定是runtime.getruntime().exec() 它啟動了乙個新的程序。查資料如下:

在單獨的程序中執行指定命令和變數。(jdk api 1.6.0 中文版exec()方法說明)

看樣子在程式中解決問題是不現實了,那麼只能修改配置檔案了。修改那個檔案了,google下看看,哇,修改好多檔案都可以呀,為什麼修改這多種類檔案的方法都有呢?既然他們都寫出來了說明都曾經解決過相應的問題。那麼到底哪個才能適合我目前的問題呢?沒有思路繼續找資料,知道看到一篇關於linux 讀取配置檔案的順序的文章才明白。

下面是的部分拷貝:

執行順序為:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout 

關於各個檔案的作用域,在網上找到了以下說明: 

(1)/etc/profile: 此檔案為系統的每個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行. 並從/etc/profile.d目錄的配置檔案中蒐集shell的設定。 

(2)/etc/bashrc: 為每乙個執行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取。 

(3)~/.bash_profile: 每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當使用者登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案。 

(4)~/.bashrc: 該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該該檔案被讀取。 

(5)~/.bash_logout:當每次退出系統(退出bash shell)時,執行該檔案. 另外,/etc/profile中設定的變數(全域性)的可以作用於任何使用者,而~/.bashrc等中設定的變數(區域性)只能繼承/etc /profile中的變數,他們是"父子"關係。 

(6)~/.bash_profile 是互動式、login 方式進入 bash 執行的~/.bashrc 是互動式 non-login 方式進入 bash 執行的通常二者設定大致相同,所以通常前者會呼叫後者。

感謝博主整理,上面內容**位址是:

三、最終解決方案:

根據執行的順序我們從後面往前面查詢,發現有設定lang 和ulimit 的地方改過來就可以了,如果沒有就在配檔案中新增乙個,我是在 ~/.bash_profile   中更改的

ulimit -n 8196

export lang="en_us.utf-8"

有人說在 /etc/sysconfig/i18n 裡面更改編碼方式,當然這樣也可以,只是需要注意一點的是,不要被後面讀取的配置檔案的同樣的屬性把我們自己的設定的變數給覆蓋了就好了。這也是為什麼網上有那麼多解決方法的原因了。

mysql 修改編碼方式 Mysql編碼方式修改

mysql編碼方式修改 使用mysql插入中文亂碼 mysql select name from info name 1 row in set 0.00 sec mysql 1.修改配置檔案的方式修改 找到mysql下的my.conf 1.在 mysqld 下新增 character set ser...

檢視修改mysql編碼方式

mysql的預設編碼是latin1,不支援中文,要支援中午需要把資料庫的預設編碼修改為gbk或者utf8。1 需要以root使用者身份登陸才可以檢視資料庫編碼方式 以root使用者身份登陸的命令為 mysql u root p,之後兩次輸入root使用者的密碼 檢視資料庫的編碼方式命令為 show ...

python修改編碼方式

如果在windows下 可以在python安裝目錄下的lib site packages目錄中,新建乙個sitecustomize.py檔案 也可以建在其它地方,然後手工匯入,建在這裡,每次啟動python的時候設定將自動生效 內容如下 1importsys 2sys.setdefaultencod...