You get the "D" characters when decoding Russian encoded in UTF-8 using Latin-1 
instead.

# coding: utf-8
x=u'Зарегистрироваться'
print x.encode('utf-8').decode('latin-1')
Зарегистрироваться

Check that your html encoding is declared correctly.

--
Mark


  "Oleg Oltar" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
  Ok, seems it's my console setting. Tried console with koi8-r (from 
http://vak.ru/doku.php/macosx-russian), and it looks ok there. Mean the 
satndard output, but still getting "D" chars instead of russian when trying to 
convert it to html via HTMLTestRunner (see 
http://tungwaiyip.info/software/HTMLTestRunner.html) 


  On Thu, Jul 17, 2008 at 9:33 AM, Oleg Oltar <[EMAIL PROTECTED]> wrote:


    And in case:
    # coding: utf-8


      import traceback 
      try:
          raise Exception(u'Зрегиться')
      except Exception,e:

          print traceback.format_exc().decode('utf-8').encode('cp437', 
'replace')


    Getting

    beryl:~ oleg$ python ./wish/newaccount/reg.py

    Traceback (most recent call last):

      File "./wish/newaccount/reg.py", line 5, in <module>
        raise Exception(u'?????????')
    Exception: <unprintable Exception object>



    My console settings:


    In [1]: import sys

    In [2]: sys.getdefaultencoding()
    Out[2]: 'ascii'

    In [3]: sys.stdout.encoding
    Out[3]: 'US-ASCII'



    On Thu, Jul 17, 2008 at 9:30 AM, Oleg Oltar <[EMAIL PROTECTED]> wrote:

      OK
      the output:


        # coding: utf-8

        import traceback 
        try:

            raise Exception(u'Зрегиться')

        except Exception,e:
            print traceback.format_exc().decode('utf-8')



      >>> Traceback (most recent call last):

        File "/var/folders/PC/PCtFE4gQGiqpQymiAScfnk+++TM/-Tmp-/py46506ECT", 
line 7, in <module>

          print traceback.format_exc().decode('utf-8')

      UnicodeEncodeError: 'ascii' codec can't encode characters in position 
148-156: ordinal not in range(128) 






      On Thu, Jul 17, 2008 at 8:13 AM, Mark Tolonen <[EMAIL PROTECTED]> wrote:

        The Exception is output in the encoding of the source file.  If the 
terminal you are displaying the exception on is in a different encoding, it 
will be garbled.  I'm not familiar with OS X's terminal.  Try running python 
and printing sys.stdout.encoding.

        Alternatively, wrap your code in a try/except handler and translate the 
exception yourself.

            # coding: utf-8
            import traceback
            try:
                raise Exception(u'Зарегистрироваться')
            except Exception,e:
                print traceback.format_exc().decode('utf-8')

        The last line translates the utf-8 traceback into Unicode.  Printing 
Unicode will encode the output with the terminal's decoding.  If there are 
characters it can't display, you'll still get an error, though.  You can be 
more explicit however:

            print 
traceback.format_exc().decode('utf-8').encode('cp437','replace')

        In this case you'll get ? whenever a character can't be represented in 
the selected encoding.  cp437, for example, can't display any russian 
characters, so for me (on Windows) I just get all ???????????.  When I tried it 
with a character string that could be displayed in cp437, it worked fine:

            Traceback (most recent call last):

              File "<stdin>", line 1, in <module>
              File "t4.py", line 4, in <module>
                raise Exception('MàΓ£ΦΘΩδ')
            Exception: MàΓ£ΦΘΩδ

        Another option is to redirect the output to a file and read the file 
with an editor that can display utf-8 (such as Notepad on Windows).

            python testfile.py 2>error.txt          # this redirects stderr to 
a file.

        Hope that helps,
        Mark
          "Oleg Oltar" <[EMAIL PROTECTED]> wrote in message news:[EMAIL 
PROTECTED]
            The code
           # -*- coding: utf-8 -*-
          #!/usr/bin/python


          """

          This test case check how system works in the situation, when user 
tries to use already
          used username (domain)

          We are creating two accounts with such parameters:
          1. Sex = Femle
          2. Name1=Name2 = foobar%S 
          3. Pass1 = Name
          4. Pass2 = Name
          5. Email address1 = Email address2 =  [EMAIL PROTECTED] 


          In the test we use verification point - warning message about 
incorrect input of domain name and the
          sugestion message

          """

          from selenium import selenium
          import unittest, time, re
          import HTMLTestRunner
          import config
          import Creating_account_basic




          class Same_domain_name(unittest.TestCase):
              
              def setUp(self):        
                  self.name = "foobar"
                  self.email = self.name + "@meta.ua" 
                  self.verificationErrors = []
                  self.selenium = selenium("localhost", 4444,config.browser, 
config.link)
                  self.selenium.start()

              def test_create_account_to_check(self):  
                  """Creating sample account for next test"""
                  sel = self.selenium
                  sel.open("/")
                  sel.click(u"link=Регистрация")
                  sel.wait_for_page_to_load("70000")
                  sel.click("id_gender_1")
                  sel.type("id_first_name", self.name)
                  sel.type("id_last_name", self.name)
                  sel.type("id_email", self.email)
                  sel.type("id_username",  self.name)
                  
#sel.wait_for_condition(sel.is_element_present("check_username_block"), 70000)
                  time.sleep(10)
                  print "!!!", sel.is_element_present("check_username_block")
                  sel.type("id_password",  self.name)
                  print sel.get_text("check_username_block").decode('cp-1252')
                  sel.type("id_password2", self.name)
                  sel.click(u"//[EMAIL PROTECTED]'Зарегистрироваться']")
                  sel.wait_for_page_to_load("70000")
                  if config.debugMode is True:
                      time.sleep(5)


              def tearDown(self):
                  self.selenium.stop()
                  print self.verificationErrors
                  self.assertEqual([], self.verificationErrors)

          if __name__ == "__main__":
              
              unittest.main()
              #HTMLTestRunner.main()
           




          On Thu, Jul 17, 2008 at 6:47 AM, Oleg Oltar <[EMAIL PROTECTED]> wrote:

            In [1]: import sys

            In [2]: sys.getdefaultencoding()
            Out[2]: 'ascii'

            In [3]: sys.stdout.encoding
            Out[3]: 'US-ASCII' 



            On Thu, Jul 17, 2008 at 6:29 AM, Oleg Oltar <[EMAIL PROTECTED]> 
wrote:

              Seems need help there. Start getting 


              Traceback (most recent call last):

                File "./newaccount/Same_domain_name.py", line 56, in 
test_create_account_to_check
                  print sel.get_text("check_username_block")
              UnicodeEncodeError: 'ascii' codec can't encode characters in 
position 0-4: ordinal not in range(128)


              when trying to get the text of one of the elements. 

              How to solve it? 



              On Thu, Jul 17, 2008 at 5:11 AM, Oleg Oltar <[EMAIL PROTECTED]> 
wrote:

                OK,

                I just run the program from terminal. OS: OS X, IDLE = Emacs:).

                Yep used the string "# -*- coding: utf-8 -*-" to setup 
encoding.... 



                On Thu, Jul 17, 2008 at 4:14 AM, Kent Johnson <[EMAIL 
PROTECTED]> wrote:

                  Another possibility - do you have a coding declaration in 
your source
                  file, something like
                  # -*- coding: <encoding name> -*-

                  If so, does the coding declaration match the actual encoding 
of the file?

                  Kent


                  On Wed, Jul 16, 2008 at 5:11 PM, Kent Johnson <[EMAIL 
PROTECTED]> wrote:
                  > On Wed, Jul 16, 2008 at 2:40 PM, Oleg Oltar <[EMAIL 
PROTECTED]> wrote:
                  >> Hi I am using unittest framework with selenium.
                  >>
                  >> When I tried this code (my verification point)
                  >>
                  >>         self.assertEqual(True, 
sel.is_text_present(u"Извените пароли не
                  >> совпадают"), "System didn't give a correct warning about 
the password
                  >> misstype")
                  >>
                  >>> Where u"Извените пароли не совпадают" is russian = "Sorry 
passwords aren't
                  >>> equal", and sel.is_text_present - searches text string on 
the page
                  >>
                  >> The output I get in case of failure was:
                  >>
                  >>
                  >> Traceback (most recent call last):
                  >>
                  >>   File "./newaccount/Password_matching.py", line 50, in
                  >> test_passwordMatching
                  >>     self.assertEqual(True, 
sel.is_text_present(u"Извените
                  >> пароли не Ñ Ð¾Ð²Ð¿Ð°Ð´Ð°ÑŽÑ‚"), "System didn't 
give a correct
                  >> warning about the password misstype")
                  >>
                  >> AssertionError: System didn't give a correct warning about 
the password
                  >> misstype
                  >>
                  >> Is there any way to get normal russian text instead of 
these strange D chars
                  >> "Изве...."
                  >
                  > I don't have the solution but maybe I can give you a useful 
clue. The
                  > D characters are most likely the utf-8 encoding of the 
Russian text,
                  > when displayed as if it is latin-1. So something in the 
system is
                  > converting the text to utf-8 and your console probably has 
latin-1 or
                  > cp1252 encoding.
                  >
                  > Some details might help - how are you running the program - 
console,
                  > IDLE...? What OS? What are the values of 
sys.getdefaultencoding() and
                  > sys.stdout.encoding?
                  >
                  > Kent
                  >











----------------------------------------------------------------------


          _______________________________________________
          Tutor maillist  -  Tutor@python.org
          http://mail.python.org/mailman/listinfo/tutor


        _______________________________________________
        Tutor maillist  -  Tutor@python.org
        http://mail.python.org/mailman/listinfo/tutor










------------------------------------------------------------------------------


  _______________________________________________
  Tutor maillist  -  Tutor@python.org
  http://mail.python.org/mailman/listinfo/tutor
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to