2012-03-09 33 views
5

Khi tôi trích xuất dữ liệu từ cơ sở dữ liệu MySQL, một số đầu ra có các ký tự đặc biệt, khi được mở trong ví dụ: emacs nó giải mã thành \240\346.Làm cách nào để chuyển đổi các ký tự đặc biệt thành UTF-8?

Khi thể hiện trong một thiết bị đầu cuối UTF-8, ký tự đặc biệt được thể hiện như

Vì vậy, các vỉa mã hóa được sử dụng để chỉ sử dụng 1 byte cho mỗi ký tự.

Tôi có thể, ví dụ: thấy rằng \346 phải là æ.

Câu hỏi

Liệu Perl có một mô-đun có thể mã hóa các ký tự đặc biệt sang UTF-8?

+0

http://blog.jonnay.net/archives/820-Emacs-and-UTF-8-Encoding.html? –

+0

Câu hỏi không phải về các emacs. Tôi muốn Perl mã hóa nội dung thành UTF-8. –

+1

bạn đã thiết lập thiết bị đầu cuối để hiển thị utf-8 chưa? –

Trả lời

3

Sử dụng Encode::decode để giải mã dữ liệu của bạn từ bất kỳ mã hóa nào trong định dạng nội bộ của Perl.

Sau đó, khi ghi dữ liệu ra tệp, hãy đặt lớp 'utf8' để làm cho dữ liệu được ghi bằng UTF-8.

use Encode; 

my $data_from_database = ...; 

my $perl_data = decode('ISO-8859-1', $data_from_database); 

binmode STDOUT, ':utf8'; 

print $perl_data; 
Các vấn đề liên quan