此代码用于将重音字符转写为 7 位 ASCII:
setlocale(LC_CTYPE, 'en_US_POSIX.UTF-8');
echo iconv('UTF-8', 'US-ASCII//TRANSLIT', 'Jalapeño Café');
但是现在输出的是
Jalapeno Cafe
,而不是 Jalapeo Caf
。
我可以在服务器上的区域设置列表中看到
en_US_POSIX
。
PHP版本是7.4.10。
问题发生在经过多次实验之前和之后,我能够找到 locale 和 iconv 参数来修复它,但现在它不起作用。关于下一步该做什么有什么建议吗?
当我检查
setlocale(LC_CTYPE, 'en_US_POSIX.UTF-8')
的返回值时,我得到 false
,这意味着存在错误。因此,如果这在过去似乎有效,我敢打赌在此之前还有其他事情在起作用。
您应该能够仅使用
en_US
作为区域设置。
if(false === setlocale(LC_CTYPE, 'en_US')){
throw new \RuntimeException('Could not change the locale');
}
echo iconv('UTF-8', 'ASCII//TRANSLIT', 'Jalapeño Café');
// Jalapeno Cafe