10/10/2018, 11:15

[HELP] Unicode với hàm strtolower() hay strtoupper()!??

2 hàm strtolower() hay strtoupper() sử dụng với tiếng Anh thì ko sao, khi sử dụng với các ký tự Unicode lại bị lỗi font chuyển thành mấy ký tự lạ đọc ko được, bạn nào bị chỗ này chưa chỉ m với
bachnga viết 13:28 ngày 10/10/2018
Nếu bạn biết mã chữ a là 97, chữ A là 65 (tương tự b là 98B là 66,...) thì bạn sẽ hiểu...
Vì mã của chắc gì cách nhau 32.
Một giải pháp:
Thay vì dùng strtolower($str) thử dùng mb_strtolower($str, "utf8")
nnquangit viết 13:19 ngày 10/10/2018
Được gửi bởi bachnga
Nếu bạn biết mã chữ a là 97, chữ A là 65 (tương tự b là 98B là 66,...) thì bạn sẽ hiểu...
Vì mã của chắc gì cách nhau 32.
Một giải pháp:
Thay vì dùng strtolower($str) thử dùng mb_strtolower($str, "utf8")
Viết lại cho rồi ko thì dùng css.
hoichobiet2212 viết 13:18 ngày 10/10/2018
Được gửi bởi bachnga
Nếu bạn biết mã chữ a là 97, chữ A là 65 (tương tự b là 98B là 66,...) thì bạn sẽ hiểu...
Vì mã của chắc gì cách nhau 32.
Một giải pháp:
Thay vì dùng strtolower($str) thử dùng mb_strtolower($str, "utf8")
Giải pháp dùng hàm mb_strtolower($str, "utf8") ko được bạn ah, ví dụ chuỗi "HoÀnG NGọC miNh" thì nó hiện là: hoà ng ngọc minh

Được gửi bởi nnquangit
Viết lại cho rồi ko thì dùng css.
Dùng css mà cũng xử lý dc cái này ah` bạn :-?
bachnga viết 13:30 ngày 10/10/2018
Bạn thử lưu cái nì thành 1 file php rồi chạy xem sao?
PHP Code:
<?php
$mb_str 
"Sử dụng hàm có sẵn";
$mb_str mb_strtoupper($mb_str,"utf8");
$css_str "Sử dụng bảng kiểu";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TEST</title>
<style>
.inhoa{
    text-transform:uppercase;
}
</style>
</head>

<body>
<?php echo $mb_str;?><br>
<span class="inhoa"><?php echo $css_str;?></span>
</body>
</html>
Được gửi bởi hoichobiet2212
Giải pháp dùng hàm mb_strtolower($str, "utf8") ko được bạn ah, ví dụ chuỗi "HoÀnG NGọC miNh" thì nó hiện là: hoà ng ngọc minh
Bạn chưa chọn View->Character Encoding->Unicode (UTF-8)
cuongbn viết 13:16 ngày 10/10/2018
Được gửi bởi hoichobiet2212
Giải pháp dùng hàm mb_strtolower($str, "utf8") ko được bạn ah, ví dụ chuỗi "HoÀnG NGọC miNh" thì nó hiện là: hoà ng ngọc minh
Không phải là ko được bạn ạ, 1 là trong header http phải phải set utf-8 hoặc trong <head></head> thêm
PHP Code:
Content-Typetext/htmlcharset=utf-
Ví dụ 1 function chuẩn hóa xâu ( không biết bạn này có cũng lớp mình ko nữa, ở lớp gặp ông thầy nguy hiểm kinh)
PHP Code:
function parse($str) { 
$str trim($str); 
$str trim($str' '); 
while (
strpos($str' ')) 
$str str_ireplace(' '' '$str); 
$str mb_convert_case($strMB_CASE_TITLE"UTF-8"); 
return 
$str

echo 
parse(' đỒ âhÍ      mInH '); 
Còn về utf-8 thì 1 kí tự có dấu bạn nhìn thấy binh thường, nó gồm khá nhiều các kí tự riêng rẽ ghép lại, nên khi xử lý nó cũng rắc rối hơn bt.
nnquangit viết 13:22 ngày 10/10/2018
Được gửi bởi hoichobiet2212
Giải pháp dùng hàm mb_strtolower($str, "utf8") ko được bạn ah, ví dụ chuỗi "HoÀnG NGọC miNh" thì nó hiện là: hoà ng ngọc minh



Dùng css mà cũng xử lý dc cái này ah` bạn :-?
Không biết ah` ?

Được gửi bởi hoichobiet2212
2 hàm strtolower() hay strtoupper() sử dụng với tiếng Anh thì ko sao, khi sử dụng với các ký tự Unicode lại bị lỗi font chuyển thành mấy ký tự lạ đọc ko được, bạn nào bị chỗ này chưa chỉ m với
Nếu show ra cho người ta đọc thì đây.

<div style="text-transform:lowercase;">
À Á
</div>

Còn nếu bác muốn viết lại thì bác phải replace char vào tương ứng với đống này :

'/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ |Ặ|Ẳ|Ẵ/'
'/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/'
'/Ì|Í|Ị|Ỉ|Ĩ/'
'/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ |Ợ|Ở|Ỡ/'
'/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/'
'/Ỳ|Ý|Ỵ|Ỷ|Ỹ/'
'/Đ/'

Suy nghĩ chi cho mệt óc ^_^
hoichobiet2212 viết 13:16 ngày 10/10/2018
Cảm ơn các bạn nhiều, để mình làm thử những cách trên xem sao
Bài liên quan
0