0

phpでデータをbase64にエンコードするのに問題があります。base64_encode関数を使用してペルシア語のメールの件名をエンコードしたいと思います。しかし、期待した結果は得られませんでした。base64_encode関数のテストを開始しました。
PHPで「سلام」を変換したときの結果は「0+HH4w ==」でした。http: //www.base64encode.org/Webサイトで同じことをテストしたときの結果は「2LPZhNin2YU=」でした。base64_decode( '2LPZhNin2YU =')を試しましたが、出力は'سلام'でした
。なぜこれが発生しているのか、どうすれば修正できますか?

4

2 に答える 2

1

「0+HH4w ==」はCP1256(別名Windows-1256 http://en.wikipedia.org/wiki/Windows-1256)であり、「2LPZhNin2YU=」はUTF8です。

スクリプトの文字セットをwindows-1256に設定するだけで、すべて問題ないはずです。

于 2012-09-08T13:44:56.650 に答える
0

base64_encode()問題を引き起こしているのは関数ではなく、前の処理である可能性があります。文字列には、意味のあるテキストを保持するために、エンコーディングとバイトストリームの2つの要素が必要であることを忘れないでください。base64でエンコードされた値から判断すると、文字列のUTF8エンコードが失われ、Windowsコードページのエンコードに変換されました。

于 2012-09-08T13:45:49.747 に答える