2015-02-12 18 views
6

Xin chào các bạn. Tôi luôn gặp vấn đề với iconv. Bây giờ tôi phải chuyển đổi chuỗi sang Windows-1250 và điều này không có vẻ làm việc:php - biểu tượng chuyển đổi từ UTF-8 sang Windows-1250 không hoạt động

$string = "ľaľa ho papľuha, ogrcal mi krpce!"; 
echo $string . ' (' . mb_detect_encoding($string) . ') <br>'; 
$string_encoded = iconv(mb_detect_encoding($string), 'Windows-1250//TRANSLIT', $string); 
echo $string_encoded . ' (' . mb_detect_encoding($string_encoded) . ') <br>'; 
$string_encoded = mb_convert_encoding($string, 'Windows-1250'); 
echo $string_encoded . ' (' . mb_detect_encoding($string_encoded) . ') <br>'; 

Ba echos trên đầu ra chính xác này:

ľaľa ho papľuha, ogrcal mi krpce! (UTF-8) 
�a�a ho pap�uha, ogrcal mi krpce! () 
mb_convert_encoding() Unknown encoding &quot;Windows-1250&quot; (ASCII) 

Vì tôi đã luôn luôn nhìn thấy kim cương này dấu hỏi Tôi tự hỏi, nếu chức năng này php hoạt động ở tất cả. Làm thế nào tôi có thể chuyển đổi UTF-8 sang Windows-1250?

  • Các tập tin được lưu trong notepad ++ trong UTF-8
  • tiêu đề Ngoài ra tôi đã cố gắng ('Content-Type: text/html; charset = windows-1250'); và setLocale()

Trả lời

3

Ký tự is là dấu hiệu cho thấy văn bản của bạn đang được hiểu là UTF-8, nhưng tại thời điểm này, chuỗi byte không hợp lệ đã gặp phải. Có nghĩa là, bạn không phục vụ UTF-8, nhưng khách hàng đang đọc nó như là UTF-8. Điều này có nghĩa là iconv chỉ hoạt động tốt và bất kỳ ai đọc kết quả vừa không nhận được thông báo rằng nó sẽ giải thích nó là Windows-1250.

Xem What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With TextHandling Unicode Front To Back In A Web App.

+1

Có bạn đã đúng. Mã hóa đã được gửi dưới dạng windows-1250 nhưng trình duyệt không hiển thị đúng –

1

là bài cũ nhưng bạn có thể chuyển đổi UTF-8 cho Windows-1252 và bạn sẽ có cùng hiệu lực:

$str = "ľaľa ho papľuha, ogrcal mi krpce!" 
$str = mb_convert_encoding($str, "Windows-1252", "UTF-8"); 

nhưng nếu bạn thực sự cần Windows-1250 bạn có thể sử dụng THIS SOLUTION và thích ứng với nhu cầu của bạn.

0

Tôi đã gặp phải sự cố tương tự. Trong khi đọc tệp CSV, từ "áeská republika" được đọc là "áeská republika".

này giải quyết nó cho tôi:

iconv("Windows-1250", "UTF-8", ($string)); 
Các vấn đề liên quan