马上注册,结交更多好友,享用更多功能,让你轻松玩转闽南师范大学。
您需要 登录 才可以下载或查看,没有账号?立即加入
×
本粗人在写程序的时候习惯这样子:
6 X0 A$ b2 M& F9 P p/ k/ P0 i% X; k2 P0 @
print “中文”
3 G% F2 d, K2 `% ~# ` D% Y. M# Y$ H' E' U4 r) a4 Y, P
显然,这个写法是不具可移植性的。因为,在windows下默认编码是gbk,在很多linux下面默认编码是utf-8。如果源代码的编码是gbk,在windows下可以工作得很好,如果源代码是utf-8,在windows下会打印出一堆乱码。好一点的作法是
! m5 J) f5 z4 [6 `& }/ Z6 m5 \- k6 y% p
print u”中文”
2 o7 [$ e4 {% m4 }8 d) t$ W1 i9 s. |9 Z3 g) n0 [7 M
这样的话,在不论源代码的编码是什么,也不论操作系统是什么,都可以打印出正确的字符。可是如果这样子就麻烦了:
* ~% G- l+ z& d& l% |% I/ H, w+ [& }( H$ k( i1 N4 h7 K
name=third_party_module.get_system_username()
- |- t0 q# I( Uprint u”你好,%s”%name
/ l. F- _! u, b A
1 T# u% @+ ~8 O: u# D7 K2 ?third_party_module.get_system_username()返回一个当前登录的用户真实名字。但是他返回的到底是什么编码的我们不知道。因为unicode()函数默认使用当前系统的默认编码。倘若name的编码与当前系统默认的一样,一切OK。如果不一样,问题就麻烦了。幸好返回时使用的一般是当前系统默认编码。
$ a! b9 V) `% W, S/ ?' V% K% D7 e/ C) O6 u
最麻烦的:
% u7 ?( ], Y/ [3 @1 w
$ ~& N9 L2 F7 h$ t; Lname=third_party_module.get_system_username()
; a, Y. L* H7 S) [( }client_socket.send(name) a4 ~0 j- w, R& y, }7 U% j
7 y5 {, e' R9 G1 s7 H- u
字符串被发送到网络上,到达运行着不同操作系统的远程主机上。远程的主机怎么知道这是什么编码呢?最近经常遇到这样的问题,实在很郁闷。
$ r" C3 d4 E8 N. P% ^ps:本人是初学的新手 |