Lorsque vous écrivez des applications Web à l'aide de PHP, vous devez souvent gérer des fenêtres contextuelles d'alerte dans le code JavaScript frontal. Toutefois, lors de l'utilisation de caractères non ASCII, tels que le chinois, dans la fenêtre contextuelle d'alerte, des caractères tronqués peuvent apparaître car l'alerte utilise le codage ASCII par défaut. Cet article explique comment transcoder la fenêtre contextuelle d'alerte en PHP et résoudre le problème des caractères chinois tronqués.
1. Utilisez les fonctions JavaScript escape et unescape pour le transcodage
Les fonctions JavaScript escape et unescape sont utilisées respectivement pour encoder et décoder les caractères non-ASCII dans les chaînes. Par conséquent, la chaîne dans la fenêtre contextuelle d'alerte peut être codée à l'aide de la fonction d'échappement en PHP, et la fonction unescape peut être utilisée dans le code JavaScript frontal pour décoder, résolvant ainsi le problème des caractères chinois tronqués.
Le code spécifique est le suivant :
Code PHP :
$msg = "你好,世界!"; $escaped_msg = escape($msg); echo "<script>alert(unescape('" . $escaped_msg . "'));</script>";
Code JavaScript :
function escape(str) { var res = ''; for (var i = 0; i < str.length; i++) { if (str.charAt(i) === '@') { res += '@@'; } else if (escape(str.charAt(i)).length > 1) { res += '@' + escape(str.charAt(i)).substring(1); } else { res += str.charAt(i); } } return res; } function unescape(str) { var res = ''; for (var i = 0; i < str.length;) { if (str.charAt(i) === '@') { if (str.charAt(i + 1) === '@') { res += '@'; i += 2; } else { res += unescape('%' + str.substring(i + 1, i + 3)); i += 3; } } else { res += str.charAt(i); i++; } } return res; }
2. Utilisez les fonctions JavaScript encodeURIComponent et decodeURIComponent pour le transcodage
Les fonctions JavaScript encodeURIComponent et decodeURIComponent sont utilisées pour encoder et décoder les caractères chinois le URL respectivement. Par conséquent, vous pouvez également utiliser la fonction encodeURIComponent pour encoder la chaîne dans la fenêtre contextuelle d'alerte en PHP, et utiliser la fonction decodeURIComponent pour la décoder dans le code JavaScript frontal afin de résoudre le problème des caractères chinois tronqués.
Le code spécifique est le suivant :
Code PHP :
$msg = "你好,世界!"; $encoded_msg = rawurlencode($msg); echo "<script>alert(decodeURIComponent('" . $encoded_msg . "'));</script>";
Code JavaScript :
function decodeURIComponent(str) { var res = ''; try { res = decodeURIComponent(str); } catch (e) { res = str; } return res; }
Résumé
Cet article présente deux méthodes pour implémenter le transcodage d'alerte en PHP, qui utilisent les fonctions JavaScript escape et unescape, et qui utilisent JavaScript. Fonctions encodeURIComponent et decodeURIComponent. Ces deux méthodes peuvent résoudre le problème de confusion lorsque des caractères non-ASCII tels que le chinois sont utilisés dans la fenêtre contextuelle d'alerte. Il convient de noter que la compatibilité et la sécurité du code doivent être prises en compte lors de l’utilisation de ces méthodes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!