开发者

Unicode setlocale and strftime fails at windows

开发者 https://www.devze.com 2022-12-19 16:42 出处:网络
I have one page and it\'s encoding is UTF-8 and If i try to run that code in unix system everythings looks fine but when i try to run in windows(7) some chracters looks question mark(�). How c开发者_

I have one page and it's encoding is UTF-8 and If i try to run that code in unix system everythings looks fine but when i try to run in windows(7) some chracters looks question mark(�). How c开发者_JAVA技巧an run the code fine both of two system(without using iconv).

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


Microsoft Windows does not support UTF-8 locales. So if you provide turkish locale, it would pic an 8-bit code page that allows representation of specific language.

For example for locale Hebrew it would pic codepage-1255, for Turkish it would probably be 1254.

So, you can't use this under MS-Windows platform.

How can run the code fine both of two system(without using iconv).

Probably use non-utf8 encoding under MS Windows.


For those who is having similar problems on linux (this may work also for windows but not sure).

Yes there is 'turkish' but there is also 'tr_TR.utf8' . If you use 'tr_TR.utf8' most probably your problems will be washed away. Same thing applies also to 'greek'. Instead use 'el_GR.utf8'

On linux you can check the locale list to find the proper settings for your site.

locale -a

List is too long and you can't see all languages, so either you can just dump it into a file and then open the file to check.

locale -a > locale.txt
vi locale.txt

or do locale -a | grep languagecode for a specific language

locale -a | grep tr
0

精彩评论

暂无评论...
验证码 换一张
取 消