Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > str and unicode proper usage

Reply
Thread Tools

str and unicode proper usage

 
 
gizli
Guest
Posts: n/a
 
      12-14-2009
Hi all,

If an entire application operates on Unicode strings from UI to
database, is there a use case for str() and unicode() functions? The
application should be able to read/write files, open sockets and
execute external processes and parse their output. From my own
experiments, the open() command for files accepts unicode strings. I
am just wondering if there is a place where str() would have to be
used, other than the usual use case of converting a non-string python
construct (such as an integer) into a string.

The reason I am asking is, I work on a project with several other
developers and our NLS testing is not going so well. Major reason is
(I think) that there is a lot of str() functions interspersed
everywhere. So whenever a unicode character is used in those
variables, the application breaks. My recommendation to the team was
to remove these functions and only leave the necessary ones. However,
I do not have a generic answer on when a str() function is necessary.

Thanks!
 
Reply With Quote
 
 
 
 
Dave Angel
Guest
Posts: n/a
 
      12-14-2009


gizli wrote:
> Hi all,
>
> If an entire application operates on Unicode strings from UI to
> database, is there a use case for str() and unicode() functions? The
> application should be able to read/write files, open sockets and
> execute external processes and parse their output. From my own
> experiments, the open() command for files accepts unicode strings. I
> am just wondering if there is a place where str() would have to be
> used, other than the usual use case of converting a non-string python
> construct (such as an integer) into a string.
>
> The reason I am asking is, I work on a project with several other
> developers and our NLS testing is not going so well. Major reason is
> (I think) that there is a lot of str() functions interspersed
> everywhere. So whenever a unicode character is used in those
> variables, the application breaks. My recommendation to the team was
> to remove these functions and only leave the necessary ones. However,
> I do not have a generic answer on when a str() function is necessary.
>
> Thanks!
>
>

Consider switching to Python 3.x, if you aren't using any incompatible
3rd party libraries. There, the str type is always Unicode, and
literals are interpreted as Unicode.

But if 3.x isn't an option, I'd say you only need 8bit strings when
doing I/O to 8 bit devices and files. You might also need them when
talking to a program not under your own control. But if it's feasible,
convert input data immediately to Unicode, do all your processing
(including all literal strings) in Unicode, and convert back on output.
You may also need 8bit strings for some OS calls, but if you're writing
portable code, those should be minimized.

DaveA

 
Reply With Quote
 
 
 
 
Lie Ryan
Guest
Posts: n/a
 
      12-14-2009
On 12/15/2009 5:05 AM, gizli wrote:
> Hi all,
>
> If an entire application operates on Unicode strings from UI to
> database, is there a use case for str() and unicode() functions? The
> application should be able to read/write files, open sockets and
> execute external processes and parse their output. From my own
> experiments, the open() command for files accepts unicode strings. I
> am just wondering if there is a place where str() would have to be
> used, other than the usual use case of converting a non-string python
> construct (such as an integer) into a string.
>
> The reason I am asking is, I work on a project with several other
> developers and our NLS testing is not going so well. Major reason is
> (I think) that there is a lot of str() functions interspersed
> everywhere. So whenever a unicode character is used in those
> variables, the application breaks. My recommendation to the team was
> to remove these functions and only leave the necessary ones. However,
> I do not have a generic answer on when a str() function is necessary.
>
> Thanks!


str() is rightly renamed byte() in python 3. The new name reflects its
real role: as generic binary string. Use str()/byte() to represent
non-textual stream of binary data (e.g. audio/video stream, .doc file,
or cipher-text).
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
bug in str.startswith() and str.endswith() Ethan Furman Python 4 05-27-2011 01:48 PM
Is there any way to minimize str()/unicode() objects memory usage[Python 2.6.4] ? dmtr Python 18 08-07-2010 02:41 PM
*str++ and (*str)++ newbie30 C Programming 0 08-12-2009 04:50 PM
if len(str(a)) == len(str(r)) and isMult(a, r): faster if isMult isslow? maestro Python 1 08-11-2008 01:17 PM
what's the deference between str=null and str=" " ???????? David Java 2 08-03-2003 04:10 PM



Advertisments