2010-04-05 33 views
10

Có chức năng php nào để xử lý các mã hóa dưới đây không?Chức năng PHP để chuyển đổi unicode thành các ký tự đặc biệt?

.replaceAll("\u00c3\u0080", "À") 
    .replaceAll("\u00c3\u0081", "Á") 
    .replaceAll("\u00c3\u0082", "Â") 
    .replaceAll("\u00c3\u0083", "Ã") 
    .replaceAll("\u00c3\u0084", "Ä") 
    .replaceAll("\u00c3\u0085", "Å") 
    .replaceAll("\u00c3\u0086", "Æ") 
    .replaceAll("\u00c3\u00a0", "à") 
    .replaceAll("\u00c3\u00a1", "á") 
    .replaceAll("\u00c3\u00a2", "â") 
    .replaceAll("\u00c3\u00a3", "ã") 
    .replaceAll("\u00c3\u00a4", "ä") 
    .replaceAll("\u00c3\u00a5", "å") 
    .replaceAll("\u00c3\u00a6", "æ") 
    .replaceAll("\u00c3\u0087", "Ç") 
    .replaceAll("\u00c3\u00a7", "ç") 
    .replaceAll("\u00c3\u0090", "Ð") 
    .replaceAll("\u00c3\u00b0", "ð") 
    .replaceAll("\u00c3\u0088", "È") 
    .replaceAll("\u00c3\u0089", "É") 
    .replaceAll("\u00c3\u008a", "Ê") 
    .replaceAll("\u00c3\u008b", "Ë") 
    .replaceAll("\u00c3\u00a8", "è") 
    .replaceAll("\u00c3\u00a9", "é") 
    .replaceAll("\u00c3\u00aa", "ê") 
    .replaceAll("\u00c3\u00ab", "ë") 
    .replaceAll("\u00c3\u008c", "Ì") 
    .replaceAll("\u00c3\u008d", "Í") 
    .replaceAll("\u00c3\u008e", "Î") 
    .replaceAll("\u00c3\u008f", "Ï") 
    .replaceAll("\u00c3\u00ac", "ì") 
    .replaceAll("\u00c3\u00ad", "í") 
    .replaceAll("\u00c3\u00ae", "î") 
    .replaceAll("\u00c3\u00af", "ï") 
    .replaceAll("\u00c3\u0091", "Ñ") 
    .replaceAll("\u00c3\u00b1", "ñ") 
    .replaceAll("\u00c3\u0092", "Ò") 
    .replaceAll("\u00c3\u0093", "Ó") 
    .replaceAll("\u00c3\u0094", "Ô") 
    .replaceAll("\u00c3\u0095", "Õ") 
    .replaceAll("\u00c3\u0096", "Ö") 
    .replaceAll("\u00c3\u0098", "Ø") 
    .replaceAll("\u00c5\u0092", "Œ") 
    .replaceAll("\u00c3\u00b2", "ò") 
    .replaceAll("\u00c3\u00b3", "ó") 
    .replaceAll("\u00c3\u00b4", "ô") 
    .replaceAll("\u00c3\u00b5", "õ") 
    .replaceAll("\u00c3\u00b6", "ö") 
    .replaceAll("\u00c3\u00b8", "ø") 
    .replaceAll("\u00c5\u0093", "œ") 
    .replaceAll("\u00c3\u0099", "Ù") 
    .replaceAll("\u00c3\u009a", "Ú") 
    .replaceAll("\u00c3\u009b", "Û") 
    .replaceAll("\u00c3\u009c", "Ü") 
    .replaceAll("\u00c3\u00b9", "ù") 
    .replaceAll("\u00c3\u00ba", "ú") 
    .replaceAll("\u00c3\u00bb", "û") 
    .replaceAll("\u00c3\u00bc", "ü") 
    .replaceAll("\u00c3\u009d", "Ý") 
    .replaceAll("\u00c5\u00b8", "Ÿ") 
    .replaceAll("\u00c3\u00bd", "ý") 
    .replaceAll("\u00c3\u00bf", "ÿ"); 

Trả lời

14

Hãy thử mb_convert_encoding() với "thành" mã hóa như 'HTML-ENTITIES', và (nếu cần thiết) "từ" mã hóa thiết lập để 'UTF-8' hoặc bất cứ Unicode mã hóa, bạn đang sử dụng.

+0

trình, cảm ơn bạn! – rawrrrrrrrr

+1

Trong php6, sẽ không cần cho MultiByte (mb) nữa. – confiq

2

Sử dụng strtr, nó rất nhanh.

+0

Không hoạt động, vì các thực thể html là nhiều ký tự và 'strtr()' chỉ thực hiện ánh xạ ký tự 1: 1. – Amber

+1

Không chính xác, nó có thể hoạt động trên các cặp khóa-giá trị của một mảng (thay thế mỗi lần xuất hiện 'khóa' bằng 'giá trị'), nơi bạn có thể thay thế các chuỗi nhiều ký tự. – soulmerge

2

Tôi thấy điều này là thú vị, nơi mà các câu trả lời trước đã không làm việc:

function jsonRemoveUnicodeSequences($struct) { 
    return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct)); 
} 

tôi tìm thấy nó ở đây: http://www.avoid.org/replace-u-characters-in-json-string/

Các vấn đề liên quan