引用 Perl Unicode FAQ “如果我不解码怎么办?”
每当您的编码二进制字符串与文本字符串一起使用时,Perl 将假定您的二进制字符串是使用 ISO-8859-1 编码的,也称为 latin-1。如果它不是 latin-1,那么您的数据会被转换得不愉快。例如,如果它是 UTF-8,则多字节字符的各个字节被视为单独的字符,然后再次转换为 UTF-8。可以将这种双重编码与双重 HTML 编码 (>) 或双重 URI 编码 (%253E) 进行比较。
这种无声的隐式解码被称为“升级”。这听起来可能是积极的,但最好避免它。
禁用此隐式解码将迫使程序员正确使用decode()
/encode()
并有助于防止错误。
是否可以关闭隐式解码?理想情况下,将二进制字符串与文本字符串一起使用会导致错误。