从Groovy脚本调用的Python脚本中编码异常

时间:2015-11-18 10:41:14

标签: python unicode groovy utf-8

我正在尝试从Groovy脚本执行Python脚本:)

以下是我执行命令的方法:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;

    if (convertView == null) {
        holder = new ViewHolder();
        convertView = inflater.inflate(R.layout.recycler_view_item, parent, false);
        holder.tvName = (TextView) convertView.findViewById(R.id.tvName);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    holder.tvName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Button was clicked
        }
    });

    return convertView;
}

其中def cmd = """guessit -j "$tmp" """ String output = cmd.execute() 包含作为groovy脚本的参数传递的文件名。 如果有非ascii字符(我在$tmp中有俄文字母),我会收到Unicode错误

$tmp

编码为UTF-8,'ascii' codec can't encode characters in position 11-16: ordinal not in range(128) 已设置

Python错误日志

-Dfile.encoding=UTF-8

Python源代码在https://github.com/wackou/guessit/blob/2.x/guessit/main.py

如果我从cmd调用此命令 - 没有错误。 操作系统是Windows 7.非Unicode的语言是俄语

怎么了?

1 个答案:

答案 0 :(得分:1)

解决! SET PYTHONIOENCODING=utf-8设置stdin,stdout和stderr

的python编码