2012-08-01 35 views
5

Khi có một tập tin lưu trong tiêu chuẩn ISO-8859-1 và sử dụng lệnhnào charset xem xét các chức năng thay đổi từ PHP5.2 để PHP5.4

echo "test: ".htmlspecialchars("äöü"); 

Sự trở lại sẽ chỉ "thử nghiệm:".

Điều này là do bộ ký tự chuẩn cho htmlspecialchars được đổi thành UTF-8 trong PHP5.4. Bạn cần đặt rõ ràng bộ ký tự:

echo "test: ".htmlspecialchars("äöü", ENT_COMPAT | ENT_HTML401, 'ISO-8859-1'); 

Có bất kỳ chức năng nào khác trong PHP5.4, sẽ không hoạt động bình thường nữa, nếu bạn không đặt bộ ký tự?

Trả lời

1

htmlentities có vẻ là một chức năng đã được thay đổi: http://de3.php.net/manual/de/migration54.other.php

Hướng dẫn chuyển đổi từ PHP 5.2-> 5.3 không cung cấp thêm bất kỳ chức năng làm thay đổi charset mặc định: http://de3.php.net/manual/de/migration53.php

Vì vậy, có lẽ nó chỉ là htmlspecialchars()htmlentities

Dù sao, tôi nghĩ hai chắc chắn nên đi đến "không tương thích thay đổi ngược" -list http://de3.php.net/manual/de/migration54.incompatible.php

+2

Tôi muốn thêm một cái gì đó: PHP 5.4 được cho là "PHP 6.0" được giả định là đầy đủ UTF- 8, vì vậy trong một tương lai gần, tất cả các chức năng sẽ được thiết lập mặc định là UTF-8. –

+0

@David Bélanger: Điều này rất không chính xác. Chưa bao giờ có PHP 6.0 và PHP 5.4 không bao giờ được coi là PHP 6.0. Ngoài ra PHP 6.0 - nếu bao giờ - được supposted là UTF-16, không phải UTF-8. – hakre

+0

@hakre False. Xem http://smartwebdeveloper.com/php/php-6-features-release-date-hosting-download –