Tôi đang sử dụng DOMDocument để thao tác/sửa đổi HTML trước khi nó được xuất ra trang. Đây chỉ là một đoạn html, không phải là một trang hoàn chỉnh. Vấn đề ban đầu của tôi là tất cả các nhân vật Pháp đã bị rối tung lên, mà tôi đã có thể sửa chữa sau một số thử nghiệm và lỗi. Bây giờ, có vẻ như chỉ có một vấn đề vẫn còn: 'nhân vật được biến thành? .Các vấn đề/ký tự mã hóa DOMDocument được chuyển đổi
Mã:
<?php
$dom = new DOMDocument('1.0','utf-8');
$dom->loadHTML(utf8_decode($row->text));
//Some pretty basic modification here, not even related to text
//reinsert HTML, and make sure to remove DOCTYPE, html and body that get added auto.
$row->text = utf8_encode(preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML())));
?>
Tôi biết nó đang trở nên lộn xộn với utf8 giải mã/mã hóa, nhưng đây là cách duy nhất tôi có thể làm cho nó hoạt động cho đến nay. Dưới đây là một chuỗi mẫu:
Input: Sans doute parce qu'il vient d'atteindre ngày une định thức dans son spectaculaire cheminement
Output:? Sans doute parce qu il vient d ngày atteindre une d & eacute ; terminante dans son spectaculaire cheminement
Nếu tôi tìm thấy thêm chi tiết, tôi sẽ thêm chúng. Cảm ơn bạn đã dành thời gian và hỗ trợ của bạn!
Bộ ký tự nào là '$ row-> text'?Nếu nó là UTF-8 trực tiếp (Giả sử nó đến từ MySQL, bạn cần đặt bộ ký tự kết nối thành UTF8) thì bạn không cần hàm 'utf8_ (en | de) code'. Buộc bộ ký tự thành UTF8 và tất cả các vấn đề của bạn * nên * biến mất (giả sử đó là nơi '$ row' xuất phát) ... – ircmaxell
Đầu vào đến từ CMS, tất cả được đặt thành utf8 (chuỗi, cơ sở dữ liệu, v.v.). Nhưng có vẻ như vấn đề của tôi không phải là điều tôi nghĩ. Tôi phát hiện ra rằng chuỗi đến từ tôi là tất cả OK, và đồng nghiệp của tôi 'pc quá. Vấn đề chỉ xảy ra khi chuỗi đang được đầu vào bởi máy tính của khách hàng của tôi. Tôi cá là cô ấy đang dán văn bản từ lời nói hay gì đó và một số thứ kỳ lạ đang diễn ra. Tôi sẽ phải digg vào này. – Kyrotomia
Ahhh ... Sau đó, có lẽ kiểm tra các ký tự UCS-2LE (UTF-16LE) (Vì đó là mặc định cho Word IIRC) ... – ircmaxell