如何在JS和PHP之间传递UTF-8编码的字符串

How to pass the UTF-8 encoded strings between JS and PHP?

本文关键字:UTF-8 编码 字符串 之间 JS PHP      更新时间:2023-09-26

序言:

我发现Javascript和PHP对UTF-8多字节字符代码有不同的处理方法:-PHP将多字节字符视为几个分隔的字节;JS将多字节字符视为单个整数(大于255(-PHP保留代码中的所有辅助位;JS剥离了所有这些位。

因此,俄语字母"А"的代码将是

  • PHP 中的208和144

    JS 中的1040

问题描述

我需要在客户端浏览器中用JS将一个字符串公开给一些编码例程,然后在服务器端用PHP解码一个字符串。为了对字符串进行编码和解码,我使用了JS字符串属性charCodeAt和PHP函数chr()。正如我上面提到的,这种方法不起作用,因为PHP和JS中的代码不同。

问题

PHP中是否有从UTF-8字节序列中去除辅助位的函数或者Javascript中是否有将这些辅助位添加到字符代码中的函数?

使用mb_*函数,否则会拆分字节。每个带有ord 的字节

<?php
    $the_char   = 'А';
    $byte_1     = $the_char[0];
    $byte_2     = $the_char[1];
    print (ord($byte_1) - 192) * 64 + (ord($byte_2) - 128);
?>

与Javascript 相同