2011-04-27 18 views
0

Facebookのフィードに特殊文字を投稿しようとしていますが、Facebookの投稿に表示されている文字が意図したとおりに表示されません。プログラムで拡張ASCII文字をFacebookの投稿に投稿するには?

$tmp = "αвнιjτυz"; 

//This code works as I intended, showing "αвнιjτυz" on facebook post 
$facebook->api('/me/feed', 'POST', array('message' => $tmp)); 

//I expect the displayed text in facebook post will be 'вн' but it shows strange characters instead 
$facebook->api('/me/feed', 'POST', array('message' => substr($tmp, 1, 2))); 

なぜこの問題が発生するのか、この問題に対処する方法はありますか?

答えて

1

これはあなたが働いているユニコードだと思います。substr()は、ユニコード文字が複数のバイトで表現されているため動作しませんので、代わりにmb_substr()関数を使用する必要があります。

$facebook->api('/me/feed', 'POST', array('message' => mb_substr($tmp, 1, 2))); 
+0

また 'mb_internal_encoding( 'UTF-8')' – Ethan

+0

はそれを試してみましたが、それはしませんでした作業。とにかく、私は自分のアプリケーションに固有の別のソリューションを見つけました。あなたの答えをありがとう:) – Tetrax

+1

あなたのソリューションを投稿してもよろしいですか? – Martin

1

これは古い質問ですが、マーティンの質問(および質問の解決策)のフォローアップがありません。

htmlとphpの両方のContent-TypeをUTF-8に設定する必要があります。だから、PHPコードの先頭で:

header('Content-Type: text/html; charset=utf-8');

とHTMLを持つ:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">