2016-03-31 9 views
3

私は顧客サポート番号のプレースホルダーを持つアラビア語のSMSテンプレートを使用し、プレースホルダを実際の電話番号(例:+987654400)に置き換えます。プラス記号(+)987654400+RTL(アラビア語)misplacesとpythonの電話番号の最後に歌います

サンプルコードのように置き換えたとき番号の末尾に置き忘れ:

>>> 
>>> s = '{customer_number} فتش' 
>>> print s.replace('{customer_number}', '+987654400') 
987654400+ فتش 
>>> print '+987654400'.join(s.split('{customer_number}')) 
987654400+ فتش 

>>> 
>>> s = u'{customer_number} فتش' 
>>> print s.replace('{customer_number}', '+987654400') 
987654400+ فتش 
>>> print '+987654400'.join(s.split('{customer_number}')) 
987654400+ فتش 

Pythonバージョン2.7.6、2.7.10
OS:OSX 10.11.14
ロケール:

-
端末で起きているだけでなく、次のような設定のAPIレスポンスでこの問題に気づいた。

のUbuntu 14.04.2 LTS

のpython 2.7.6
ジャンゴ1.7.6
ジャンゴ - tastypie 0.12.1

システムロケール:英語
Djangoプロジェクトのロケール:英語

+0

どのようなpythonバージョンを使用しますか? 2.7.3は正常に動作します。 – RickyA

+0

@Ricky pythonバージョン2.7.6 – Jayabal

+0

あなたのOSとロケールは何ですか(アラビア語) – RickyA

答えて

2

どういうわけかOsx terminalは文字列で魔法をやっています。ファイルに印刷すると、正しい文字列が出力されます。端末における

パイソン:ファイルへ

Python 2.7 in osx terminal

プリント:

enter image description here

ファイルの内容:

enter image description here

とproble

enter image description here

、ラテン文字で我々パッド、それを、それはファンキーなRTLのものやってされていない場合: enter image description here

を、我々はこれを行う場合、我々は文字列の内容が正しいことを確認するので、mは、端末に実際にあります

再開: OsxおよびWindows端末では、文字列をガーリングするrtlサポートがあります。 Pythonの文字列の内容はokですが、osによって切り詰められています。 Ubuntuはrtlサポートがそこのターミナルでビルドされていないのでこの問題はありません。

+0

これはターミナルだけでは問題ではありませんが、実際には私のAPIレスポンスで有線で接続されています。これは次の設定のpython 2.7.6、django 1.7.6、django-tastypie 0.12.1 – Jayabal

+0

yeyです。たぶんあなたは物事が表示されている最後のところに問題があり、db内の正しいデータです。 – RickyA

+0

はい、それは現在、ファイルシステムで管理されているテンプレートですべて正しいです。 – Jayabal