unicode setlocale和strftime在Windows上失败

我有一个页面,它的编码是UTF-8,如果我尝试在unix系统中运行该代码,一切看起来不错,但是当我尝试在Windows(7)中运行一些字符看起来问号( )。 如何运行两个系统的代码都很好(不使用iconv)。

header('Content-Type: text/html; charset=UTF-8'); setlocale(LC_ALL, 'turkish'); echo strftime("%d %B %Y, %H:%M"); 

对于那些在Linux上有类似的问题(这可能也适用于Windows,但不知道)。

是的,有'土耳其',但也有'tr_TR.utf8'。 如果你使用'tr_TR.utf8',你的问题很可能会被冲走。 同样的事情也适用于“希腊”。 而是使用'el_GR.utf8'

在Linux上,您可以检查语言环境列表以找到适合您的网站的设置。

 locale -a 

列表太长,你看不到所有的语言,所以你可以把它转储到一个文件,然后打开文件来检查。

 locale -a > locale.txt vi locale.txt 

或者做locale -a | 针对特定语言的grep语言代码

 locale -a | grep tr 

Microsoft Windows不支持UTF-8语言环境。 所以,如果你提供土耳其的语言环境,它会拍摄一个8位的代码页,允许表示特定的语言。

例如,对于语言环境希伯来语它将图片代码页1255,土耳其语可能是1254。

所以,你不能在MS-Windows平台下使用它。

如何运行两个系统的代码都很好(不使用iconv)。

可能在MS Windows下使用非utf8编码。