3

我有一个阿拉伯短信模板,其中包含客户支持号码的占位符,并将占位符替换为实际电话号码(例如 +987654400)。当替换为 987654400+ 时,加号 (+) 在数字末尾错位

示例代码:

>>> 
>>> 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
操作系统:OSX 10.11.14
语言环境:英语

--
这不仅发生在终端,首先我在 API 响应中注意到了这个问题,它具有以下配置。

Ubuntu 14.04.2 LTS

python 2.7.6
django 1.7.6
django-tastypie 0.12.1

系统语言环境:英语
django 项目语言环境:英语

4

1 回答 1

2

不知何故,Osxterminal正在用字符串做魔术。如果您打印到文件,它会输出正确的字符串。

终端中的python:

osx 终端中的 Python 2.7

打印到文件:

在此处输入图像描述

文件内容:

在此处输入图像描述

问题出在终端上,因为如果我们这样做,我们会看到字符串的内容是正确的:

在此处输入图像描述

如果我们用拉丁字符填充它,它就不会做时髦的 rtl 东西: 在此处输入图像描述

简历:Osx 和 Windows 终端具有 rtl 支持,这会使您的字符串出现乱码。python中字符串的内容是可以的,但是被操作系统破坏了。Ubuntu 没有这个问题,因为那里的终端没有构建 rtl 支持。

于 2016-03-31T12:36:58.890 回答