⑴ linux下文件編碼格式轉換方法(gb18030/utf-8)
linux下文件編碼格式轉換方法(gb18030/utf-8)
在 Linux 做開發或者系統管理遇到亂碼是經常的事情,主要windows下中文的默認編碼是bg2312,而 linux下是utf-8。很多時候 涉及到和windows平台系統的通信免不了編碼的轉化,可能大部分人都用iconv庫函數(包含在glib中)和iconv命令來執行編碼轉換,即:
iconv -f gb18030 -t utf-8 file1.txt -o file2.txt
說實話這個命令不好使,一方面容易重復轉換,另一方面不支持通配符,無法成批轉 換,文件少了還好說,要是一大堆文件豈不是要累死?
今天我要推薦的是另一個 Shell 下編碼轉換工具enca。用它不僅可以轉換編碼,還可以查看文件的原始編碼,而且還支持成批轉換。使用上也比iconv方便一些。安裝enca很簡單,一般用源安裝就行了,enca用法如下:
enca -L 當前語言 文件名
enca -L zh_CN file //檢查文件的編碼
enca -L 當前語言 -x 目標編碼 文件名
enca -L zh_CN -x UTF-8 file //將文件編碼轉換為」UTF-8″編碼
enca -L zh_CN -x UTF-8 < file1 > file2 //如果不想覆蓋原文件可以這樣
除了有檢查文件編碼的功能以外,」enca」還有一個好處就是如果文件本來就是你要轉換的那種編碼,它不會報錯,還是會print出結果來, 而」iconv」則會報錯。這對於腳本編寫是比較方便的事情。
⑵ 如何批量修改linux 文件編碼格式
批量轉換文件的編碼當然是使用命令來轉換咯,如果文件太多還可以寫一個shell腳本進行批量轉換,Linux系統中轉換文件編碼格式的命令是iconv。iconv命令的使用介紹一下,iconv命令很簡單,記住它的三個參數就可以了,下面是它的三個參數:
-f參數:表示from,就是原本的編碼格式
-t參數:表示to,就是後來的新編碼
-o參數:表示輸出文件,就是轉換編碼後的新文件的文件名,如果沒有這個參數新文件會將原來的文件覆蓋掉。
下面是將GB2312編碼的文件轉換成UTF-8編碼的例子:
iconv
-f
gb2312
-t
utf8
mygb2312.txt
-o
myutf8.txt
這個例子中mygb2412.txt就是要轉換的文件,myutf8.txt就是轉換後的新文件。
⑶ linux查看系統編碼和修改系統編碼的方法
然後修改/etc/sysconfig/i18n,如改成中文編碼:
LANG=en_US.UTF-8
改為
LANG="zh_CN.GBK"
然後辯渣在不重啟的情廳灶扒況下扮昌重新載入i18n文件
⑷ 怎麼修改linux中的字元編碼
LANG="zh_CN.UTF-8" 這一句就足夠了 如果你是通過secureCRT的,你只需要修改secureCRT的外觀里邊的字元編碼設置,改成UTF-8
⑸ linux下怎麼修改mysql的字元集編碼
可直接進入
mysql
進行更改,具體如下:
1.查找/etc目錄下是否有my.cnf文件;
#ls
-l
|
grep
my.cnf
(在/etc下查找是否有my.cnf文件存在)
2.如果沒有就要從/usr/share/mysql,拷貝一個到/etc
下,在/usr/share/mysql目錄下有五個後綴為.cnf的文件,分別是
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
;從中隨便拷貝一個到/etc目錄下並將其改為my.cnf文件,我選擇的是my-medium.cnf
:
#cp
/usr/share/mysql/my-medium.cnf
/etc/my.cnf
3.修改my.cnf文件,在該文件中的三個地方加上
default-character-set=utf8([client]
[mysqld]
[mysql])
#vi
/etc/my.cnf
修改如下:(紅色為添加部分)
[client]
#password
=
your_password
port
=
3306
socket
=
/var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
port
=
3306
socket
=
/var/lib/mysql/mysql.sock
skip-locking
key_buffer
=
16M
max_allowed_packet
=
1M
table_cache
=
64
sort_buffer_size
=
512K
net_buffer_length
=
8K
read_buffer_size
=
256K
read_rnd_buffer_size
=
512K
myisam_sort_buffer_size
=
8M
default-character-set=utf8
init_connect='SET
NAMES
utf8'
//此行可不加
[mysql]
no-auto-rehash
default-character-set=utf8
保存退出;
4.重起MySQL伺服器,使其設置的內容生效
#/etc/init.d/mysql
restart
5.
重新登入mysql;
#
mysql
-u
root
-
p
#(輸入密碼)
mysql>
show
variables
like
'character_set%'
;
+--------------------------+----------------------------+
|
Variable_name
|
Value
|
+--------------------------+----------------------------+
|
character_set_client
|
utf8
|
|
character_set_connection
|
utf8
|(都生成了utf8,成功了
哈哈哈)
|
character_set_database
|
utf8
|
|
character_set_filesystem
|
binary
|
|
character_set_results
|
utf8
|
|
character_set_server
|
utf8
|
|
character_set_system
|
utf8
|
|
character_sets_dir
|
/usr/share/mysql/charsets/
|
+--------------------------+----------------------------+
mysql啟動和停止
操作
:
可以通過
#/etc/init.d/mysql
[start
|
stop
|
restart](實現啟動,停止,重啟)
也可以通過
#service
mysql
[start
|
stop
|
restart](實現啟動,停止,重啟)
*********************************
另外:如果在修改字元集前,嘗試在資料庫中插入中文,那麼當修改了字元集後,在你所插入中文的資料庫中(在別的資料庫中可能沒問題),
通過show
variables
like
'character_set%'查詢的結果可如下:
+--------------------------+----------------------------+
|
Variable_name
|
Value
|
+--------------------------+----------------------------+
|
character_set_client
|
utf8
|
|
character_set_connection
|
utf8
|
|
character_set_database
|
latin1
|
|
character_set_filesystem
|
binary
|
|
character_set_results
|
utf8
|
|
character_set_server
|
utf8
|
|
character_set_system
|
utf8
|
|
character_sets_dir
|
/usr/share/mysql/charsets/
|
+--------------------------+----------------------------+
⑹ 如何批量修改linux 文件編碼格式
批量轉換文件的編碼當然是使用命令來轉換咯,如果文件太多還可以寫一個shell腳本進行批量轉回換,Linux系統中轉答換文件編碼格式的命令是iconv。iconv命令的使用介紹一下,iconv命令很簡單,記住它的三個參數就可以了,下面是它的三個參數:
-f參數:表示from,就是原本的編碼格式
-t參數:表示to,就是後來的新編碼
-o參數:表示輸出文件,就是轉換編碼後的新文件的文件名,如果沒有這個參數新文件會將原來的文件覆蓋掉。
下面是將GB2312編碼的文件轉換成UTF-8編碼的例子:
iconv -f gb2312 -t utf8 mygb2312.txt -o myutf8.txt
這個例子中mygb2412.txt就是要轉換的文件,myutf8.txt就是轉換後的新文件。
⑺ 如何在 Linux 中將文件編碼轉換為 UTF-8
1、iconv命令來轉換文抄件的編碼,格式:
iconv -f 原本的編碼格式 -t 要轉換成的編碼 文件名 -o 新文件名
2、例如:
iconv -f gb2312 -t utf8 a.txt -o utf8.txt
3、vim 文件名.txt
:set fileencoding
:set fenc
查看現在文本的編碼
:set fenc=編碼
轉換當前文本的編碼為指定的編碼
:set encoding=編碼
:set enc=編碼
以指定的編碼顯示文本,但不保存到文件中。
輸入 :e ++enc=gbk 強制用gbk打開
輸入 :w ++enc=utf8 轉換到utf8保存。
4、可以使用 file 命令,並添加 -i 或 --mime 參數來查看一個文件的字元編碼
file -i a.txt
⑻ 如何在 Linux 中將文件編碼轉換為 UTF-8
在Linux中轉換文件的編碼可以使用iconv命令,iconv命令很簡單,記住它的三個參數就可以了,下面是它的三個參數:
-f參數:表示from,就是原本的編碼格式
-t參數:表示to,就是後來的新編碼
-o參數:表示輸出文件,就是轉換編碼後的新文件的文件名,如果沒有這個參數新文件會將原來的文件覆蓋掉。
下面是將GB2312編碼的文件轉換成UTF-8編碼的例子:
iconv -f gb2312 -t utf8 mygb2312.txt -o myutf8.txt
這個例子中mygb2412.txt就是要轉換的文件,myutf8.txt就是轉換後的新文件。
其實還有一個方法是用一個圖形界面的Linux文本編輯器軟體打開要轉換的那個文件(比如用各發行版自帶的gedit這個軟體),然後選擇另存為功能,在保存文件的對話框中選擇需要的編碼,比如選擇UTF-8編碼,然後輸入一個新文件名再點擊保存就轉換成功了。
⑼ linux下修改文件編碼格式
在windows下編寫好的shell腳本,在linux下執行時,有時候會報錯找不到/r。
原因:Unix及類Unix系統里,每行結尾只有換行「\n」,Windows系統裡面,每行結尾是換行+回車「\n\r」,編碼格式不一樣。
windows文件格式dos
linux文件格式unix
解決方法:修改文件的編碼。
在linux上用vi打開文件
⑽ 如何在Linux系統實現字元編碼轉換
Linux 下查看文件字元編碼和轉換編碼 如果你需要在 Linux 中操作 windows 下的文件,那麼你可能會經常遇 到 文 件 編 碼 轉 換 的 問 題 。 Windows 中 默 認 的 文 件 格 式 是 GBK(gb2312),而 Linux 一般都是 UTF-8。下面介紹一下,在 Linux 中如何查看文件的編碼及如何進行對文件進行編碼轉換。
一,查看文件編碼: 在 Linux 中查看文件編碼可以通過以下幾種方式:
1.在 Vim 中可以直接查看文件編碼 :set fileencoding 即可顯示文件編碼格式。 如果你只是想查看其它編碼格式的文件或者想解決用 Vim 查看文件亂 碼的問題,那麼你可以在 ~/.vimrc 文件中添加以下內容: set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936 這樣, 就可以讓 vim 自動識別文件編碼 (可以自動識別 UTF-8或者 GBK 編碼的文件) ,其實就是依照 fileencodings 提供的編碼列表嘗試,如 果沒有找到合適的編碼,就用 latin-1(ASCII)編碼打開。
2. enca (如果你的系統中沒有安裝這個命令,可以用 sudo yum install -y enca 安裝 )查看文件編碼 $ enca filename filename: Universal transformation format 8 bits; UTF-8 CRLF line terminators 需要說明一點的是,enca 對某些 GBK 編碼的文件識別的不是很好,識 別時會出現: Unrecognized encoding
二,文件編碼轉換
1.在 Vim 中直接進行轉換文件編碼,比如將一個文件轉換成 utf-8格式 :set fileencoding=utf-8
2. iconv 轉換,iconv 的命令格式如下:輸入/輸出格式規范: -f, --from-code=名稱 原始文本編碼 -t, --to-code=名稱 輸出編碼 信息: -l, --list 列舉所有已知的字元集 輸出控制: -c 從輸出中忽略無效的字元 -o, --output=FILE 輸出文件 Svn8.Com -s, --s ilent 關閉警告 --verbose 列印進度信息 -?, --help 給出該系統求助列表 --usage 給出簡要的用法信息 -V, --version 列印程序版本號 例子: iconv -f utf-8 -t gb2312 aaa.txt >bbb.txt 這個命令讀取 aaa.txt 文件,從 utf-8編碼轉換為 gb2312編碼,其輸出定向到 bbb.txt文件。 iconv -f encoding -t encoding inputfile 比如將一個 UTF-8 編碼的文件轉換成 GBK 編碼 iconv -f GBK -t UTF-8 file1 -o file2
3. enconv 轉換文件編碼 比如要將一個 GBK 編碼的文件轉換成 UTF-8編碼,操作如下 enconv -L zh_CN -x UTF-8 filename