關於win上文字和linux上文字的編碼問題

2021-10-01 11:14:08 字數 3723 閱讀 5506

windows的預設編碼為gbk,linux的預設編碼為utf-8

[root@node1 ~]$ cat -a filename就可以看到windows下的斷元字元 ^m

閒來無聊查詢了以下幾種轉換編碼字符集的方法

1 dos2unix filename          

2 sed -i 's/^m//g' filename

3 vim filename

:1,$ s/^m//g

4 cat filename |tr -d 『/r』 > newfile ## ^m 可用 /r 代替

^m 輸入方法: ctrl+v ,ctrl+m

locale命令

程式執行使用一套語言需要有字符集(資料)和字型(顯示),locale是根據計算機使用者所使用的語言(language),所在國家或者地域(territory),以及當地的文化傳統字符集(codeset)所定義的乙個軟體執行時的語言環境。

完全的locale表達方式是 [語言[_地域][.字符集] [@修正值]。

zh_cn.gb2312=中文_中華人民共和國+國標2312字符集。

centos7中

[root@node1 ~]$ locale

locale localectl localedef

[root@node1 ~]$ localectl

list-keymaps list-locales set-keymap set-locale set-x11-keymap status

[root@node1 ~]$ localectl set-locale l

lang= lc_collate= lc_measurement= lc_name= lc_telephone=

language= lc_ctype= lc_messages= lc_numeric= lc_time=

lc_address= lc_identification= lc_monetary= lc_*****=

centos6中檢視現有語言環境(檢視可用語言環境 加選項-a)

[root@meng ~]$ locale

lang=en_us.utf-8

lc_ctype="en_us.utf-8" ## 語言符號及其分類(lc_ctype)

lc_numeric="en_us.utf-8" ## 數字(lc_numeric)

lc_time="en_us.utf-8" ## 時間顯示格式(lc_time)

lc_collate="en_us.utf-8" ## 比較和排序習慣(lc_collate)

lc_monetary="en_us.utf-8" ## 貨幣單位(lc_monetary)

lc_messages="en_us.utf-8" # 主要是提示、錯誤、狀態資訊, 標題, 標籤, 按鈕和選單等(lc_messages)

lc_*****="en_us.utf-8" # 預設紙張尺寸大小(lc_*****)

lc_name="en_us.utf-8" # 姓名書寫方式(lc_name)

lc_address="en_us.utf-8" # 位址書寫方式(lc_address)

lc_telephone="en_us.utf-8" # **號碼書寫方式(lc_telephone)

lc_measurement="en_us.utf-8" # 度量衡表達方式(lc_measurement)

lc_identification="en_us.utf-8" # 對locale自身包含資訊的概述(lc_identification)

lc_all=

設定locale就是設定12大類的locale分類屬性,即 12個lc_。除了這12個變數可以設定以外,為了簡便起見,還有兩個變數:lc_all和lang以及久遠前的language(設定應用程式的介面語言)

它們之間有乙個優先順序的關係:lc_all > lc_ > lang

可以這麼說,lc_all是最上級設定或者強制設定,可以管所有的locale,而lang是預設設定值。

修改/etc/sysconfig/i18n檔案,lang="zh_cn.utf-8"或lang=「zh_cn.gbk」

普通使用者修改 ~/.profile 新增 export lang zh_cn.gbk

或者臨時生效 export lc_all=zh_cn.gbk

三、安裝中文字符集

1、安裝所有與中文支援相關的包

[root@meng ~]$ yum -y groupinstall chinese-support
2、修改字元編碼配置檔案

[root@meng ~]$ vim /etc/sysconfig/i18n

lang="zh_cn.utf-8"

supported="zh_cn:zh:en_us.utf-8:en_us:en:zh_cn.gb18030"

sysfont="latarcyrheb-sun16"

#linuxtype=targeted

lang是language的簡稱,決定系統的預設語言,即系統的選單、程式的工具欄語言、輸入法預設語言等。

sysfont是system font的簡稱,決定系統預設用哪一種字型。

supported變數決 定系統支援的語言,即系統能夠顯示的語言。

需要說明的是,由於計算機起源於英語國家,因此,不管你把這些變數設定成什麼,英語總是預設支援的,而且不管用什麼字型,英文本型總包含在其中。

臨時調整終端亂碼現象:

[root@meng ~]$ lang=""# lang變數被清空後,系統就預設用英語

或export lang=""

但這種設定只是臨時改變了lang這個bash變數而已。當退出重新登入或者切換到其他字元終端後就無效了。

永久解決的需要修改上面的/etc/sysconfig/i18n配置檔案

最好不要把lang變數簡單的清空,因為這個變數不僅在字元模式下用到,在圖形介面下也用到,簡單清空在字元模式下確實不會有問題,但在圖形介面下,卻會造成中文無法正常顯示的情況,在過去redhat系列的版本中i18n檔案中還有乙個叫language的變數,專門控制圖形介面下的語言設定,現在的fc系列中已經把這兩個變數整合成乙個變數了。

windows下編輯的中文,在linux下顯示為亂碼,解決方法

[root@node1 ~]$ cat /etc/sysconfig/i18n

lang="en_us.utf-8"

sysfont="latarcyrheb-sun16"

修改為:

lang="zh_cn.gbk"

supported="zh_cn.utf-8:zh_cn:zh"

sysfont="latarcyrheb-sun16"

或者:[root@node1 ~]$ vim /etc/profile

export lc_all="zh_cn.gbk"

export lang="zh_cn.gbk"

jenkins上win和linux之前傳輸安裝包

二 建立遠端伺服器 三 在linux獲取最新時間點安裝包 industry heat packname ls home jenkins workspace common service dist service inspection adaptor zip time ctime sort time ...

關於linux和win系統遇到的問題

今天在專案發版本時,遇到了這個問題 程式是多個版本一直迭代,用的是資料夾作版本號,寫sql指令碼放在資料夾,系統啟動執行,有些指令碼前後順序有要求。在乙個建表和查詢的指令碼的順序執行過程中,由於順序錯誤導致指令碼執行不到,資料庫版本公升級不上。在困擾多時,才想起可能是linux 和 win系統中,檔...

關於linux和win下的檔案操作函式小問題

在clion中進行c 檔案操作的時候發現,沒有direct.h和io.h這兩個標頭檔案。無法包含標頭檔案,兩個原因 要麼就是包含路徑不對,但是如果是系統檔案,路徑不應該有問題 那麼就是另外乙個原因,系統裡就不應該有這個標頭檔案,而是用別的方法實現的。網上提供的大部分方法就是find locate c...