我正在研究一种解决这个问题的方法,在一个自动脚本中使用特殊字符来创建PHP帐户。由于特殊字符在电子邮件地址和其他地方是不需要的,所以我试图去掉它们,但是在将它们输入脚本之前我不能删除它们,因为用户名必须正确地显示给其他用户。
例如:J rgen G tz应该得到电子邮件地址jorgen.gotz@domain.com,但是在用户数据库中,他的名字应该仍然是J rgen,他的姓G tz。我希望我不要不清楚我想要实现什么。
我一直在尝试iconv(),但我遇到了一些问题。请参阅下面的代码。
$utf8_sentence =‘Wei,Goldmann,G bel,Weiss,G the,Goethe und G tz’; (LC_ALL,'en_GB'); echo $trans_sentence = iconv('UTF-8','ASCII//TRANSLIT',$utf8_sentence);
上面的代码应该返回
Weiss,Goldmann,Gobel,Weiss,Gothe,Goethe und Gotz
但它却给了我
Weiss,Goldmann,G"obel,Weiss,G"othe,Goethe und G"otz
我不明白报价是怎么回事。
Chrome和IE都给了我相同的结果,页面使用的是charset="utf-8“。
在使用iconv()之前,我尝试使用strtr()和一个“不想要的”字符数组,但我不喜欢每次需要来回转换字符串时必须设置一个特殊字符数组的解决方案。
有人能提供解释或解决办法吗?
发布于 2012-08-11 14:43:58
尝试将其添加到您的系统(Ubuntu中的终端):
sudo locale-gen de_DE.UTF-8然后更改您的php脚本的区域设置:
setlocale(LC_ALL, 'de_DE.UTF-8');编辑(Windows安装程序)
在Windows Server中,您必须安装德语包,并将上面更改为:
setlocale(LC_ALL, 'germany');发布于 2012-11-05 09:08:02
TRANSLIT试图找到与请求的字符类似的字符。由于字母不是在ascii中,它正在将它改为一对umlat和基本字母。
https://stackoverflow.com/questions/11915040
复制相似问题