Tôi hiện đang cố gắng xóa tất cả ký tự đặc biệt và dấu trọng âm khỏi chuỗi UTF-8 bằng cách chuyển chúng thành ký tự ASCII tương đương nếu có thể.Tại sao biểu tượng của PHP lại cần setlocale?
Vì vậy, tôi chỉ đơn giản là sử dụng mã này:
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
Vấn đề là ví dụ từ "đầu tay" biến thành "dbut" thay cho "ra mắt". Để làm cho nó làm việc, tôi cần thêm một cuộc gọi đến setlocale, như thế này:
setlocale(LC_ALL, 'en_US.UTF8');
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
Và tôi không hiểu tại sao. Tôi nghĩ UTF-8 và ASCII luôn giống nhau, bất kỳ ngôn ngữ nào bạn sử dụng.
EDIT: Tôi không có ý UTF-8 bằng ASCII, tôi có nghĩa là UTF-8 luôn bằng UTF-8 và ASCII luôn bằng ASCII
ASCII và UTF-8 aint giống nhau. UTF-8 lớn hơn theo thứ tự độ lớn. – NikiC