Tôi vẫn không hiểu làm thế nào iconv
hoạt động.
Ví dụ,
$string = "Löic & René";
$output = iconv["UTF-8", "ISO-8859-1//TRANSLIT", $string];
Tôi có,
Thông báo: iconv [] [function.iconv]: Đã phát hiện một ký tự không hợp lệ trong chuỗi đầu vào trong ...
$string = "Löic";
hoặc là $string = "René";
Tôi có,
Thông báo: iconv[] [function.iconv]:
Đã phát hiện một ký tự multibyte không đầy đủ trong chuỗi nhập vào.
Tôi chẳng nhận được gì với $string = "&";
Có hai bộ kết quả đầu ra khác nhau mà tôi cần lưu trữ chúng trong hai cột khác nhau bên trong bảng của cơ sở dữ liệu của tôi,
Tôi cần chuyển đổi
Löic & René
sangLoic & Rene
mục đích url sạch.Tôi cần giữ nguyên chúng -
Löic & René
vìLöic & René
sau đó chỉ chuyển đổi chúnghtmlentities[$string, ENT_QUOTES];
khi hiển thị chúng trên trang html của tôi.
Tôi đã thử với một số gợi ý trong php.net dưới đây, nhưng vẫn không hoạt động,
Tôi đã gặp một tình huống mà tôi cần một số ký tự được chuyển ngữ, nhưng những ký tự khác đã bỏ qua [đối với những dấu phụ kỳ lạ như ayn hoặc hamza]. Thêm // DỊCH // BỎ QUA dường như là một mẹo nhỏ đối với tôi. Nó chuyển ngữ mọi thứ có thể được chuyển ngữ, nhưng sau đó ném ra những thứ không thể chuyển ngữ được.
Vì thế:
$string = "ʿABBĀSĀBĀD";
echo iconv['UTF-8', 'ISO-8859-1//TRANSLIT', $string];
// output: [nothing, and you get a notice]
echo iconv['UTF-8', 'ISO-8859-1//IGNORE', $string];
// output: ABBSBD
echo iconv['UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $string];
// output: ABBASABAD
// Yay! That's what I wanted!
và khác,
Andries Seutens 07-Nov-2009 07:38
When doing transliteration, you have to make sure that your LC_COLLATE is properly set, otherwise the default POSIX will be used.
To transform "rené" into "rene" we could use the following code snippet:
setlocale[LC_CTYPE, 'nl_BE.utf8'];
$string = 'rené';
$string = iconv['UTF-8', 'ASCII//TRANSLIT', $string];
echo $string; // outputs rene
Làm thế nào tôi thực sự có thể giải quyết chúng?
Cảm ơn.
BIÊN TẬP:
Đây là tệp nguồn mà tôi kiểm tra mã,
30 hữu ích 3 bình luận 70k xem chia sẻ