错误编码/解码已经是Unicode对象python

时间:2015-12-09 03:17:48

标签: python-2.7 unicode

我正在使用Python2.7

我有一个像这样的unicode字符串:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class menuScript : MonoBehaviour {
public Canvas quitMenu;
public Button startText;
public Button exitText;
    // Use this for initialization
    void Start () {
    quitMenu=quitMenu.GetComponent<Canvas>();
    startText=startText.GetComponent<Button>();
    exitText=exitText.GetComponent<Button>();
    quitMenu.enabled=false;
    }

    public void ExitPress()
    {
        quitMenu.enabled=true;
        startText.enabled=false;
        exitText.enabled=false;
    }

    public void NoPress()
    {
        quitMenu.enabled=false;
        startText.enabled=true;
        exitText.enabled=true;
    }
    public void StartLevel()
    {
        Application.LoadLevel(1);
    }
    public void ExitGame()
    {
        Application.Quit();
    }
}

我想打印这个:

s = u'Rub\xc3\xa9n'

我尝试过多种方式直接打印,但没有成功:

print convert(s)
Rubén

我知道我声明字符串不是最好的形式,但其他脚本正在提供该格式。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这是一个错误解码为latin1的Unicode字符串或类似的编码,例如windows-1252,但实际上是utf8

>>> s = 'Rub\xc3\xa9n'.decode('latin1')
>>> s
u'Rub\xc3\xa9n'

它应该被解码为:

>>> s = 'Rub\xc3\xa9n'.decode('utf8')
>>> s
u'Rub\xe9n'
>>> print s
Rubén

如果您无法控制字符串的生成方式,可以使用以下方法撤消问题:

>>> print u'Rub\xc3\xa9n'.encode('latin1').decode('utf8')
Rubén