Tôi đang so sánh các chuỗi và phải thay thế umlauts trong JS, nhưng có vẻ như JS không nhận ra các umlauts trong chuỗi. Các văn bản đến từ cơ sở dữ liệu và trong trình duyệt các umlauts làm tốt.Thay thế umlauts trong JS
function replaceUmlauts(string)
{
value = string.toLowerCase();
value = value.replace(/ä/g, 'ae');
value = value.replace(/ö/g, 'oe');
value = value.replace(/ü/g, 'ue');
return value;
}
Như các mẫu tìm kiếm tôi đã cố gắng:
- "a", "ö", "ü"
- /a /,/o /,/ü/
- "
ä
" , "ö
", "ü
" (cũng hoàn toàn tuyệt vọng ;-))
Để chắc chắn, không phải là vấn đề với chức năng thay thế Tôi cố gắng indexOf:
console.log(value.indexOf('ä'));
Nhưng đầu ra với tất cả các mô hình là: -1
Vì vậy, tôi đoán nó là một số loại của một vấn đề với mã hóa, nhưng như tôi đã nói trên trang mà umlauts làm chỉ cần nhìn tốt .
Bất kỳ ý tưởng nào? Điều này có vẻ rất đơn giản ...
EDIT: Ngay cả khi tôi tìm thấy câu trả lời của mình, vấn đề vẫn chưa thực sự được giải quyết "ở gốc" (bảng mã). Đây là mã hóa trang của tôi:
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
Cơ sở dữ liệu có: utf8_general_ci
Có vẻ hoàn toàn ổn với tôi.
mã hóa nào bạn sử dụng trong cơ sở dữ liệu của bạn và bạn sử dụng mã hóa nào trong trang web của mình? – Marc
Và chuỗi là gì ??? Đăng nhập. Cách tiếp cận của bạn sẽ hoạt động, nhưng như bạn có thể thấy từ indexOf của bạn, chuỗi của bạn không chứa "ä". – Bergi
'" bäg ".replace (/ ä/g," ae "); // ==> "baeg" ', vì vậy, có thể có gì đó không đúng với mã hóa của bạn –