Php 使用mb_convert_编码函数是一种好的做法吗
这个问题与其他问题不同,因为它询问安全性如何,以及使用mb_convert_编码函数是否是一种良好的做法 假设用户可以使用PHPAPI上传文件。每个文件名和路径都存储在一个PostgreSQL数据库表中,该表的默认编码为UTF-8 有时,用户上传的文件名称不是UTF-8编码的,它们被导入到数据库中。问题是,未进行UTF-8编码的字符被置乱,并且不会在表列中显示 在导入之前,我考虑在PHP代码中添加以下内容:Php 使用mb_convert_编码函数是一种好的做法吗,php,postgresql,encoding,character-encoding,Php,Postgresql,Encoding,Character Encoding,这个问题与其他问题不同,因为它询问安全性如何,以及使用mb_convert_编码函数是否是一种良好的做法 假设用户可以使用PHPAPI上传文件。每个文件名和路径都存储在一个PostgreSQL数据库表中,该表的默认编码为UTF-8 有时,用户上传的文件名称不是UTF-8编码的,它们被导入到数据库中。问题是,未进行UTF-8编码的字符被置乱,并且不会在表列中显示 在导入之前,我考虑在PHP代码中添加以下内容: if ( ! mb_check_encoding($output, 'UTF-8') {
if ( ! mb_check_encoding($output, 'UTF-8') {
$output = mb_convert_encoding($content, 'UTF-8');
}
这看起来像是一个好的实践吗?如果我返回UTF-8作为输出,用户的客户端会正确地显示和转换它吗?使用mb_convert_编码是否会导致字节丢失
谢谢如果要转换编码,您需要知道要从中转换什么。您可以检查编码是否有效UTF-8,但如果它告诉您它无效UTF-8,那么您仍然不知道它是什么。从
mb\u convert\u encoding
中省略$from\u encoding
参数只会使其假定该参数采用某种预设编码,但这并不意味着$content
实际上在该编码中
换句话说:如果您不知道字符串的编码方式,那么您也无法有意义地将其转换为其他内容,而只是尝试将其从“”转换\_(ツ)_/“'是一个垃圾球,其结果同样可能是有用的东西和完全的垃圾
如果遇到未知编码,您只有几个选择:
bin2hex
或类似的方法,基本上放弃了对其进行正确解释的尝试,但仍然保留了一些与原始值的相似之处若你们应该将文件导入数据库,那个么真正的问题是什么呢