马上注册,结交更多好友,享用更多功能,让你轻松玩转闽南师范大学。
您需要 登录 才可以下载或查看,没有账号?立即加入
×
本粗人在写程序的时候习惯这样子:, k r) x: `" ~: F# F
?" X+ k% v, ]$ ?2 ~print “中文”# n2 v! t3 o2 g7 K+ W: F
" g, S6 |' F/ _, D' h& s显然,这个写法是不具可移植性的。因为,在windows下默认编码是gbk,在很多linux下面默认编码是utf-8。如果源代码的编码是gbk,在windows下可以工作得很好,如果源代码是utf-8,在windows下会打印出一堆乱码。好一点的作法是
; H% T- F; L6 J+ x5 z8 i$ [
' l# \' T% v% nprint u”中文”5 q# U9 C$ m/ g* Z' z& n- k4 E
1 D. }0 ?$ J. Y) P& D) X2 ^7 K, w这样的话,在不论源代码的编码是什么,也不论操作系统是什么,都可以打印出正确的字符。可是如果这样子就麻烦了:
8 I( L% e! l1 m; c$ |* g; O' Y) ]5 g) V1 C$ a
name=third_party_module.get_system_username()
; T; g9 \# `/ o3 @$ P5 G1 Zprint u”你好,%s”%name
" u! w3 e6 t, u& ^. T& n7 e7 w2 B) P9 \4 ~
third_party_module.get_system_username()返回一个当前登录的用户真实名字。但是他返回的到底是什么编码的我们不知道。因为unicode()函数默认使用当前系统的默认编码。倘若name的编码与当前系统默认的一样,一切OK。如果不一样,问题就麻烦了。幸好返回时使用的一般是当前系统默认编码。1 m; {) Y Z, b7 k1 F! G0 l
D3 e" u }4 ]1 [$ F
最麻烦的:( _% @' {1 x5 y0 g) W* X
% y( T" ~# M9 ~$ o5 G. y0 m' A
name=third_party_module.get_system_username()
7 h3 d( Z" D& x7 x5 m2 a4 ?client_socket.send(name)
# i5 g3 O" q6 }. w. h) \
$ v3 S5 X( Y* w1 X9 W- J" Y+ a4 E字符串被发送到网络上,到达运行着不同操作系统的远程主机上。远程的主机怎么知道这是什么编码呢?最近经常遇到这样的问题,实在很郁闷。
' g% e( @4 _0 p0 D( f4 J. hps:本人是初学的新手 |