Hướng dẫn php convert utf8 to latin1 - php chuyển đổi utf8 sang latin1

Một số tập lệnh của tôi đang sử dụng mã hóa khác nhau và khi tôi cố gắng kết hợp chúng, điều này đã trở thành một vấn đề.

Nhưng tôi không thể thay đổi mã hóa mà họ sử dụng, thay vào đó tôi muốn thay đổi mã hóa kết quả từ tập lệnh A và sử dụng nó làm tham số trong tập lệnh B.

Vậy: Có cách nào đơn giản để thay đổi chuỗi từ UTF-8 thành ISO-88591 trong PHP không? Tôi đã xem UTF_encode và _Decode, nhưng họ không làm những gì tôi muốn. Tại sao không có bất kỳ "utf2iso []"-hàm hoặc tương tự?

Tôi không nghĩ rằng tôi có những nhân vật không thể viết bằng định dạng ISO, vì vậy đó không phải là một vấn đề lớn.

chiếu

12.6K5 Huy hiệu vàng38 Huy hiệu bạc44 Huy hiệu đồng5 gold badges38 silver badges44 bronze badges

Hỏi ngày 17 tháng 12 năm 2008 lúc 12:40Dec 17, 2008 at 12:40

2

Hãy xem iconv[] hoặc mb_convert_encoding[]. Nhân tiện, tại sao không

$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
0 và
$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
1 làm việc cho bạn?

UTF8_Decode-Chuyển đổi một chuỗi với các ký tự ISO-8859-1 được mã hóa với UTF-8 thành một byte ISO-8859-1 — Converts a string with ISO-8859-1 characters encoded with UTF-8 to single-byte ISO-8859-1

UTF8_ENCODE-Mã hóa chuỗi ISO-8859-1 thành UTF-8 — Encodes an ISO-8859-1 string to UTF-8

Vì vậy, về cơ bản

$utf8 = 'ÄÖÜ'; // file must be UTF-8 encoded
$iso88591_1 = utf8_decode[$utf8];
$iso88591_2 = iconv['UTF-8', 'ISO-8859-1', $utf8];
$iso88591_2 = mb_convert_encoding[$utf8, 'ISO-8859-1', 'UTF-8'];

$iso88591 = 'ÄÖÜ'; // file must be ISO-8859-1 encoded
$utf8_1 = utf8_encode[$iso88591];
$utf8_2 = iconv['ISO-8859-1', 'UTF-8', $iso88591];
$utf8_2 = mb_convert_encoding[$iso88591, 'UTF-8', 'ISO-8859-1'];

Tất cả nên làm như nhau - với

$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
2 không yêu cầu mở rộng đặc biệt, mb_convert_encoding[] yêu cầu ext/mbstring và iconv[] yêu cầu ext/iconv.

Đã trả lời ngày 17 tháng 12 năm 2008 lúc 12:58Dec 17, 2008 at 12:58

Stefan Gehrigstefan GehrigStefan Gehrig

81.7K24 Huy hiệu vàng155 Huy hiệu bạc186 Huy hiệu đồng24 gold badges155 silver badges186 bronze badges

5

Trước hết, đừng sử dụng các mã hóa khác nhau. Nó dẫn đến một mớ hỗn độn, và UTF-8 chắc chắn là người bạn nên sử dụng ở mọi nơi.

Rất có thể là đầu vào của bạn không phải là ISO-8859-1, mà là một cái gì đó khác [ISO-8859-15, Windows-1252]. Để chuyển đổi từ những người đó, hãy sử dụng ICONV hoặc

$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
5.

Tuy nhiên,

$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
6 và
$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
7 nên hoạt động cho ISO-8859-1. Sẽ thật tuyệt nếu bạn có thể đăng một liên kết đến một tệp hoặc chuỗi ví dụ UUenCoded hoặc Base64 mà chuyển đổi không thành công hoặc mang lại kết quả bất ngờ.

Đã trả lời ngày 17 tháng 12 năm 2008 lúc 13:02Dec 17, 2008 at 13:02

Phihagphihagphihag

270K68 Huy hiệu vàng442 Huy hiệu bạc465 Huy hiệu Đồng68 gold badges442 silver badges465 bronze badges

3

Nó là tốt hơn nhiều để sử dụng

$ value = mb_convert_encode [$ value, 'html-entities', 'utf-8'];

Đặc biệt khi bạn đang sử dụng Ajax Call để gửi các ký tự 'ISO-8859-1'. Nó hoạt động cho Trung Quốc, Nhật Bản, tiếng Séc, tiếng Đức và nhiều ngôn ngữ khác.

Đã trả lời ngày 21 tháng 6 năm 2017 lúc 8:34Jun 21, 2017 at 8:34

1

Sử dụng

$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
8 và
$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
9.

$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];

$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
9 Định dạng đầu vào của bạn thành các định dạng
  
1 và
$html = html_entity_decode[htmlentities[$html, ENT_QUOTES, 'UTF-8'], ENT_QUOTES , 'ISO-8859-1'];
8 nó trở lại
  
3.

Axel

3.23711 Huy hiệu vàng38 Huy hiệu bạc57 Huy hiệu đồng11 gold badges38 silver badges57 bronze badges

Đã trả lời ngày 14 tháng 10 năm 2017 lúc 16:33Oct 14, 2017 at 16:33

Đặt thẻ meta trong đầu là

  

Sử dụng liên kết //www.i18nqa.com/debug/utf8-debug.html để thay thế ký tự biểu tượng bạn muốn.

Sau đó sử dụng str_replace như

    $find = array['“', '’', '…', '—', '–', '‘', 'é', 'Â', '•', 'Ëœ', 'â€']; // en dash
                        $replace = array['“', '’', '…', '—', '–', '‘', 'é', '', '•', '˜', '”'];
$content = str_replace[$find, $replace, $content];

Đó là phương pháp tôi sử dụng và giúp rất nhiều. Cảm ơn!

Robert

5.25743 Huy hiệu vàng63 Huy hiệu bạc114 Huy hiệu đồng43 gold badges63 silver badges114 bronze badges

Đã trả lời ngày 24 tháng 1 năm 2014 lúc 13:30Jan 24, 2014 at 13:30

Bạn cần sử dụng gói ICONV, cụ thể là chức năng biểu tượng của nó.

Đã trả lời ngày 17 tháng 12 năm 2008 lúc 12:56Dec 17, 2008 at 12:56

Martin v. Löwismartin v. LöwisMartin v. Löwis

122K17 Huy hiệu vàng194 Huy hiệu bạc235 Huy hiệu Đồng17 gold badges194 silver badges235 bronze badges

Tôi sử dụng chức năng này:

function formatcell[$data, $num, $fill=" "] {
    $data = trim[$data];
    $data=str_replace[chr[13],' ',$data];
    $data=str_replace[chr[10],' ',$data];
    // translate UTF8 to English characters
    $data = iconv['UTF-8', 'ASCII//TRANSLIT', $data];
    $data = preg_replace["/[\'\"\^\~\`]/i", '', $data];


    // fill it up with spaces
    for [$i = strlen[$data]; $i < $num; $i++] {
        $data .= $fill;
    }
    // limit string to num characters
   $data = substr[$data, 0, $num];

    return $data;
}


echo formatcell["YES UTF8 String Zürich", 25, 'x']; //YES UTF8 String Zürichxxx
echo formatcell["NON UTF8 String Zurich", 25, 'x']; //NON UTF8 String Zurichxxx

Kiểm tra chức năng của tôi trong blog của tôi //www.unexpectedit.com/php/php-handling-non-english-characters-tf8

Luís Cruz

14,5K16 Huy hiệu vàng69 Huy hiệu bạc98 Huy hiệu đồng16 gold badges69 silver badges98 bronze badges

Đã trả lời ngày 31 tháng 8 năm 2010 lúc 17:37Aug 31, 2010 at 17:37

Ignacio Pascualignacio PascualIgnacio Pascual

4311 Huy hiệu vàng6 Huy hiệu bạc 6 Huy hiệu Đồng1 gold badge6 silver badges6 bronze badges

Tôi đã sử dụng:

function utf8_to_html [$data] {
    return preg_replace[
        array [
            '/ä/',
            '/ö/',
            '/ü/',
            '/é/',
            '/à/',
            '/è/'
        ],
        array [
            'ä',
            'ö',
            'ü',
            'é',
            'à',
            'è'
        ],
        $data 
    ];
}

Luís Cruz

14,5K16 Huy hiệu vàng69 Huy hiệu bạc98 Huy hiệu đồng16 gold badges69 silver badges98 bronze badges

Đã trả lời ngày 31 tháng 8 năm 2010 lúc 17:37Sep 13, 2009 at 18:43

Ignacio Pascualignacio Pascual

$dspFileName = utf8_decode[htmlspecialchars[iconv[mb_internal_encoding[], 'utf-8', basename[$thisFile['path']]]] ];

4311 Huy hiệu vàng6 Huy hiệu bạc 6 Huy hiệu ĐồngNov 30, 2016 at 22:21

user109764user109764user109764

Tôi đã sử dụng:4 silver badges11 bronze badges

function parseUtf8ToIso88591[&$string]{
     if[!is_null[$string]]{
            $iso88591_1 = utf8_decode[$string];
            $iso88591_2 = iconv['UTF-8', 'ISO-8859-1', $string];
            $string = mb_convert_encoding[$string, 'ISO-8859-1', 'UTF-8'];       
     }
}

function utf8_to_html [$data] {
    return preg_replace[
        array [
            '/ä/',
            '/ö/',
            '/ü/',
            '/é/',
            '/à/',
            '/è/'
        ],
        array [
            'ä',
            'ö',
            'ü',
            'é',
            'à',
            'è'
        ],
        $data 
    ];
}
Dec 7, 2012 at 12:53

user1786647user1786647user1786647

Đã trả lời ngày 13 tháng 9 năm 2009 lúc 18:434 silver badges6 bronze badges

1

Bài Viết Liên Quan

Chủ Đề