我们已经在Python 2.6下运行了我们的代码库.为了准备Python 3.0,我们开始添加:
from __future__ import unicode_literals
进入我们的.py
文件(因为我们修改它们).我想知道是否还有其他人这样做并遇到任何非显而易见的陷阱(也许是在花了很多时间调试之后).
如何在PowerShell字符串中编码Unicode字符U + 0048(H)?
在C#中我会这样做:"\u0048"
但是这似乎在PowerShell中不起作用.
所以我有一个python脚本,我更喜欢在python 3.2和2.7上工作,只是为了方便.
有没有办法让unicode文字在两者中都有效?例如
#coding: utf-8
whatever = '????'
Run Code Online (Sandbox Code Playgroud)
上面的代码需要python 2.x(u'')中的unicode字符串和python 3.x中的小'u'导致语法错误.
无论如何我找到了答案,我所需要的只是:
#coding: utf-8
whatever = '????'
Run Code Online (Sandbox Code Playgroud)
由于https://meta.stackexchange.com/questions/49922/should-i-continue-adding-a-question-if-i-have-found-the-answer-myself,我仍然在发布这个问题
对于好奇,我正在努力:http://code.google.com/p/pytitle/
class A {
public static void main(String[] args) {
System.out.println("\u2300");
System.out.println("\u10035");
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过它写一条线(⌀)就好了,但十字符号没有出现,而只是打印数字5:
# javac A.java && java A
?
?5
Run Code Online (Sandbox Code Playgroud)
为什么?
如果我将unicode原始文字分配给变量,我可以读取它的值:
>>> s = u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e'
>>> s
u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e'
>>> print s
????????? ??????????
Run Code Online (Sandbox Code Playgroud)
但是当我已经为普通字符串而不是unicode字符串赋值时,我不能:
>>> s = '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e'
>>> s
'\\u0421\\u043e\\u043e\\u0431\\u0449\\u0435\\u043d\\u0438\\u0435 \\u043e\\u0442\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u043e'
>>> print s
\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e
Run Code Online (Sandbox Code Playgroud)
我该如何解码和阅读?
我有一个包含特殊unicode字符串的数组:
var a = [
["a", 33],
["h\u016B", 44],
["s\u00EF", 51],
...
];
Run Code Online (Sandbox Code Playgroud)
当我遍历这个数组时:
for (i=0;i<a.length;i++) {
document.write(a[i][0] + "<br />");
}
Run Code Online (Sandbox Code Playgroud)
它打印带有重音的字符:
a
hù
sô
...
Run Code Online (Sandbox Code Playgroud)
而且我要:
a
h\u016B
s\u00EF
...
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Javascript中实现这一目标?
我见过这样的例子:
for name in os.listdir(u'somedir') :
Run Code Online (Sandbox Code Playgroud)
我的问题是我将somedir作为变量,所以如何附加'u'字面值?
就像是
for name in ops.listdir(u+somedir)
Run Code Online (Sandbox Code Playgroud)
?
C++ 11引入了一组新的字符串文字前缀(甚至允许用户定义的后缀).除此之外,您可以直接使用Unicode转义序列来编码某个符号,而无需担心编码.
const char16_t* s16 = u"\u00DA";
const char32_t* s32 = U"\u00DA";
Run Code Online (Sandbox Code Playgroud)
但是我可以在wchar_t
字符串文字中使用unicode转义序列吗?如果不可能,这似乎是一个缺陷.
const wchar_t* sw = L"\u00DA";
Run Code Online (Sandbox Code Playgroud)
will的整数值sw[0]
当然取决于wchar_t
特定平台上的内容,但对于所有其他效果,这应该是可移植的,不是吗?
如何在Delphi 2010中制作Unicode程序?
我有英文Windows和"非Unicode程序的当前语言"也是英文.静态控件看起来不错,但如果我尝试更改它们(Label.Caption:='unicode value'或Memo.LoadFromFile(textFilename)),文本看起来像:$ ^ $&%*(#.
怎么解决?
这是一个小例子:
reg = ur"((?P<initial>[+\-])(?P<rest>.+?))$"
Run Code Online (Sandbox Code Playgroud)
(在这两种情况下文件都有-*- coding: utf-8 -*-
)
在Python 2中:
re.match(reg, u"hello").groupdict()
# => {u'initial': u'\ud83d', u'rest': u'\udc4dhello'}
# unicode why must you do this
Run Code Online (Sandbox Code Playgroud)
然而,在Python 3中:
re.match(reg, "hello").groupdict()
# => {'initial': '', 'rest': 'hello'}
Run Code Online (Sandbox Code Playgroud)
上述行为是100%完美,但切换到Python 3目前不是一个选项.将3的结果复制到2中的最佳方法是什么,这适用于窄版和宽版Python?似乎是以"\ ud83d\udc4d"格式来找我,这就是让这个变得棘手的原因.
unicode-literals ×10
unicode ×8
python ×5
c++ ×1
c++11 ×1
character ×1
delphi ×1
encoding ×1
java ×1
javascript ×1
powershell ×1
project ×1
python-2.6 ×1
python-2.7 ×1
python-2.x ×1
python-3.x ×1
regex ×1
string ×1
text ×1