Mengkonversi karakter utf8 ke iso-88591 dan kembali di PHP

Beberapa skrip saya menggunakan pengkodean yang berbeda, dan ketika saya mencoba menggabungkannya, hal ini menjadi masalah.

Tapi saya tidak bisa mengubah encoding yang mereka gunakan, sebaliknya saya ingin mengubah encodig hasil dari skrip A, dan menggunakannya sebagai parameter dalam skrip B.

Jadi: apakah ada cara sederhana untuk mengubah string dari UTF-8 ke ISO-88591 di PHP? Saya telah melihat utf_encode dan _decode, tetapi mereka tidak melakukan apa yang saya inginkan. Mengapa tidak ada "utf2iso()"-fungsi, atau sejenisnya?

Saya rasa saya tidak memiliki karakter yang tidak bisa ditulis dalam format ISO, jadi itu seharusnya tidak menjadi masalah besar.

Larutan

Lihatlah iconv() atau mb_convert_encoding(). Ngomong-ngomong: mengapa utf8_encode() dan utf8_decode() tidak bekerja untuk Anda?

utf8_decode - Mengkonversi string dengan karakter karakter ISO-8859-1 yang dikodekan dengan UTF-8 ke ISO-8859-1 single-byte

utf8_encode - Mengkodekan sebuah ISO-8859-1 string ke UTF-8

Jadi pada dasarnya

$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');

semua harus melakukan hal yang sama - dengan utf8_en/decode() tidak memerlukan ekstensi khusus, mb_convert_encoding() memerlukan ext/mbstring dan iconv() memerlukan ext/iconv.

Komentar (4)

Pertama-tama, jangan gunakan penyandian yang berbeda. Ini akan menyebabkan kekacauan, dan UTF-8 adalah yang harus Anda gunakan di mana-mana.

Kemungkinan input Anda bukan ISO-8859-1, tetapi sesuatu yang lain (ISO-8859-15, Windows-1252). Untuk mengkonversi dari itu, gunakan iconv atau mb_convert_encoding.

Namun demikian, utf8_encode dan utf8_decode seharusnya bekerja untuk ISO-8859-1. Akan lebih baik jika Anda dapat memposting tautan ke file atau uuencoded atau base64 contoh string yang konversinya gagal atau menghasilkan hasil yang tidak diharapkan.

Komentar (3)

Anda perlu menggunakan paket iconv, khususnya fungsi iconv-nya.

Komentar (0)