本人前端兼顾后端。在写一个路由器配置页面申请证书时。证书无法正确显示中文。大多是乱码。但是要求又需要能使用中文。这时候怎么办呢?去修改openssl源码么?那难度也太大了一点吧。
那就只能前后端来解决咯。当然是在后端写入配置文件之前。和读出证书数据之后,返回前端之前。进行一次编码和解码呀。这里用到php的urlencode和urldecode函数。
function encodeUnicode($str)
{
return urlToHex(urlencode($str)) ;
}
function urlToHex($str){
return str_replace("%","\\\x",$str);
}
/**
* unicode 转码转汉字
* @param $str
* @return string|string[]|null
*/
function decodeUnicode($str)
{
return urldecode(hexToUrl($str));
}
/**
* 将字符串中的 \x 字符转换为%
* @param $str
* @return string|string[]|null
*/
function hexToUrl($str)
{
return preg_replace_callback('/\\\x/', function ($s) {
return "%";
}, $str);
}
这里将中文转换成unicode编码,其实感觉可以直接使用url编码传送。因为既然openssl不能轻易传中文 那就转成英文呗。url编码和unicode编码其实感觉差不多。但没办法。
总结下来就是你不让我存中文那我就翻译一下。读出来的时候再翻译回来。嘿嘿》》》》》》》》
|