Unicode 如何编码为base64非ASCII字符?

Unicode 如何编码为base64非ASCII字符?,unicode,encoding,base64,ascii,Unicode,Encoding,Base64,Ascii,有人能给我解释一下如何将字符串“®”编码为base64(我只是选择了任何非ASCII字符作为示例)?此字符表示二进制代码174或10101110 结果是“wq4=”(这是通过检查两个在线执行base64编码的不同网站获得的) 我了解base64编码系统的工作原理。对于ASCII字符,我可以得到正确的结果,但对于任何非ASCII字符,结果都不匹配 我试过两种方法: 直接使用这个字符(10101110)的二进制文件,并将其拆分为两个6位的块:101011和100000。对于base64,它们对应于“

有人能给我解释一下如何将字符串“®”编码为base64(我只是选择了任何非ASCII字符作为示例)?此字符表示二进制代码174或10101110

结果是“wq4=”(这是通过检查两个在线执行base64编码的不同网站获得的)

我了解base64编码系统的工作原理。对于ASCII字符,我可以得到正确的结果,但对于任何非ASCII字符,结果都不匹配

我试过两种方法:

  • 直接使用这个字符(10101110)的二进制文件,并将其拆分为两个6位的块:101011和100000。对于base64,它们对应于“rg”
  • 首先将10101110转换为UTF-8,所以我有2个字节:11010101和10110000。然后我混合这两个字节,并将它们分成6位的块:110101011000000。对于base64,它们对应于“1bA”
  • 我不知道如何处理非ASCII字符。通过对任何ASCII字符进行相同的计算,就可以了


    有人知道我做错了什么吗?

    Base64将二进制数据编码为ASCII文本。在应用Base64之前,可以使用任何编码对Unicode字符进行编码,但UTF-8很方便,因为它可以对任何Unicode码点进行编码

    问题中的错误是转换为UTF-8。位从右到左首先分配最低有效位,但从左到右首先分配最高有效位

  • ®
    的Unicode代码点开始,即
    U+00AE
  • 转换为二进制:
    10101110
  • 代码点U+0080到U+07FF需要两字节UTF-8编码:110xxxxx 10xxxxxx。按如下方式分配位:11000010 10101110
  • 将数据分组为3字节块。只有两个字节,所以完成时需要一个字节的填充
  • 重新组合为6位块:
    110000 101010 111000
  • 转换为十进制:
    48 42 56
  • 使用下面的base64表格+一个键盘:
    wq4=
  • Value Encoding  Value Encoding  Value Encoding  Value Encoding
        0 A            17 R            34 i            51 z
        1 B            18 S            35 j            52 0
        2 C            19 T            36 k            53 1
        3 D            20 U            37 l            54 2
        4 E            21 V            38 m            55 3
        5 F            22 W            39 n            56 4
        6 G            23 X            40 o            57 5
        7 H            24 Y            41 p            58 6
        8 I            25 Z            42 q            59 7
        9 J            26 a            43 r            60 8
       10 K            27 b            44 s            61 9
       11 L            28 c            45 t            62 +
       12 M            29 d            46 u            63 /
       13 N            30 e            47 v
       14 O            31 f            48 w         (pad) =
       15 P            32 g            49 x
       16 Q            33 h            50 y