我们正在开展一个项目,需要模仿一个旧的遗留系统的一些导出输出。这些导出是基于文本的,并采用WINDOWS-1252编码,其中特殊字符应该以十进制/数字表示进行编码,例如:
我尝试使用
目前,我正在迭代字符串中的每个字符,并检查它是否是ASCII字符。如果该字符不是有效的ASCII字符,则使用
这个解决方案似乎可行,但我很好奇是否有更简洁的转换方法?
先谢谢了!
α
应该被编码为 α
。我尝试使用
htmlspecialchars
、htmlentities
和mb_convert_encoding
,但不幸的是都没有成功。目前,我正在迭代字符串中的每个字符,并检查它是否是ASCII字符。如果该字符不是有效的ASCII字符,则使用
mb_ord
将其转换为十进制表示。下面是我的函数:private function transformString(string $str)
{
if (mb_check_encoding($str, 'ASCII') === true) {
return $str;
} else {
$characters = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
$transformedString = '';
foreach ($characters as $character) {
if (mb_check_encoding($character, 'ASCII') === false) {
$character = sprintf('&#%s;', mb_ord($character));
}
$transformedString .= $character;
}
return $transformedString;
}
}
这个解决方案似乎可行,但我很好奇是否有更简洁的转换方法?
先谢谢了!