2012-07-03 57 views
30

Tôi có một tệp tiếng Ả Rập được mã hóa trong ISO8859-15. Làm thế nào tôi có thể chuyển đổi nó thành UTF8?
Tôi đã sử dụng iconv nhưng không hiệu quả đối với tôi.Làm thế nào để chuyển đổi ISO8859-15 sang UTF8?

iconv -f ISO-8859-15 -t UTF-8 Myfile.txt 

Tôi muốn đính kèm tệp nhưng tôi không biết cách thực hiện.

+5

Liệu 'iconv' in một thông báo lỗi, hoặc dùng nó chuyển đổi không chính xác? (Ngẫu nhiên, bạn có thể * chấp nhận * nhiều câu trả lời bạn đã nhận được cho các câu hỏi trước đó. Người trả lời sẽ đánh giá cao điều này.) – thb

+0

Không có câu trả lời nào. Tôi có nghĩa là nó chuyển đổi các tập tin không chính xác. Tôi đã kiểm tra mã hóa của tập tin và tìm thấy nó ISO-8859-15. – Hakim

+0

làm thế nào để u xác định nó là ISO-8895-15? – pizza

Trả lời

33

Có thể tệp của bạn không được mã hóa theo ISO-8859-15 không? Bạn sẽ có thể kiểm tra bằng lệnh file:

file YourFile.txt

Ngoài ra, bạn có thể sử dụng iconv mà không cung cấp mã hóa của tập tin gốc:

iconv -t UTF-8 YourFile.txt

+0

Lệnh lệnh có thể cho bạn biết mã hóa nào là thích hợp để hiểu nội dung của tệp? –

+2

@ThorstenStaerk Tôi không nghĩ vậy. Trang người đàn ông nói điều này: "Nếu không có mã hóa được đưa ra, mặc định được lấy từ mã hóa ký tự của miền địa phương hiện tại." Vì vậy, tôi tin rằng nhận xét của HighKing về việc không cung cấp mã hóa của tập tin gốc là sai. –

+0

Tiện ích tệp không phải lúc nào cũng đoán mã hóa chính xác. Bạn cần phải tự đánh giá nội dung nếu có thể hiểu được bằng cách mở tệp bằng mã hóa khác. – code4j

16

Tôi thấy điều này để làm việc cho tôi:

iconv -f ISO-8859-14 Agreement.txt -t UTF-8 -o agreement.txt 
+1

trong khi thực hiện '' file myfile.txt'', nó cho '' ISO-8859''. Vì vậy, tôi đã thử với bạn (ngoại trừ '' -14''). Nó cho thấy '' ISO-8859 không được hỗ trợ''. Và cuối cùng chỉ cần tôi đã thêm '' -14'' cùng với '' ISO-8859-14'' và làm việc .. – Spike

+1

Tôi đã thấy thường ISO-8859-1 –

2

trong trường hợp của tôi, lệnh file cho biết mã hóa sai, vì vậy tôi đã thử chuyển đổi với tất cả các mã hóa có thể và tìm ra đúng mã hóa.

thực thi tập lệnh này và kiểm tra tệp kết quả.

for i in `iconv -l` 
do 
    echo $i 
    iconv -f $i -t UTF-8 yourfile | grep "hint to tell converted success or not" 
done &>/tmp/converted 
0

Bạn có thể sử dụng mã hóa theo tiêu chuẩn ISO-8859-9:

iconv -f ISO-8859-9 Agreement.txt -t UTF-8 -o agreement.txt 
6

Tôi có ubuntu 14 và câu trả lời khác mà không làm việc cho tôi

iconv -f ISO-8859-1 -t UTF-8 in.tex > out.tex 

tôi thấy lệnh này here

0

Iconv chỉ viết văn bản được chuyển đổi thành giá trị xuất chuẩn. Bạn phải sử dụng -o OUTPUTFILE.txt làm tham số hoặc viết stdout vào tệp. (iconv -f x -t z filename.txt > OUTPUTFILE.txthoặciconv -f x -t z <filename.txt> OUTPUTFILE.txt trong một số phiên bản iconv)

Synopsis 

iconv -f encoding -t encoding inputfile 

Description 

The iconv program converts the encoding of characters in inputfile from one coded character set to another. 
**The result is written to standard output unless otherwise specified by the --output option.** 

--from-code, -f encoding 

Convert characters from encoding 

--to-code, -t encoding 

Convert characters to encoding 

--list 

List known coded character sets 

--output, -o file 

Specify output file (instead of stdout) 

--verbose 

Print progress information. 
Các vấn đề liên quan