Tôi có đoạn mã sau:Tại sao mb_convert_case trong PHP 5.4 phá vỡ chuỗi của tôi, khi ở 5.2 nó không?
header('Content-type: text/html; charset=utf-8');
$str = 'áá áá';
echo $str."\n";
echo mb_convert_case($str, MB_CASE_TITLE)."\n";
echo bin2hex($str)."\n";
echo bin2hex(mb_convert_case($str, MB_CASE_TITLE))."\n";
Sử dụng PHP 5.2.2, tôi nhận được kết quả như sau:
áá áá
áá áá
c3a1c3a120c3a1c3a1
c3a1c3a120c3a1c3a1
Sử dụng PHP 5.4.3, tôi có được điều này:
áá áá
á� á�
c3a1c3a120c3a1c3a1
c3a1e3a120c3a1e3a1
Sản lượng dự kiến của tôi trong cả hai trường hợp sẽ là:
áá áá
Áá Áá
c3a1c3a120c3a1c3a1
c381c3a120c381c3a1
Vì vậy, tôi có hai câu hỏi:
- Tại sao không được chuyển đổi sang Á?
- Tại sao PHP 5.4 phá vỡ chuỗi của tôi?
Không thể trả lời cụ thể câu hỏi của bạn, nhưng cố gắng chuyển tham số '$ encoding' thành' mb_convert_case' một cách rõ ràng. – deceze
Tôi cũng đề xuất những gì @deceze nhận xét. thêm tham số mã hóa rõ ràng. cũng kiểm tra mã hóa mặc định của bạn cho chuỗi mb. mã hóa nào là tệp trong? – hakre