java \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd 是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd 是啥意思相关的知识,希望对你有一定的参考价值。

\uFFFD中的\u表示这个字符时Unicode字符,FFFD是这个字符的编码,代表指定的文字。具体的你只要在IDE中用System.out.println就能看到结果了.

想编码变回来这样做:
String s1 = "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd";
String s2 = new String(s1.getBytes("GB2312"));
参考技术A 根据你提供的信息我只能理解为
执行\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd下的ufffd.class
参考技术B \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd这个貌似是中文转换代码。追问

我想也是那样的,可是不知道怎么给编码回来,这应该是ascill吧,不知道怎么编回到中文

追答

这两天学到了javascript 可以用javascript中的 decodeURI的方法给转码一下。就OK了

UnicodeEncodeError:'ascii'编解码器无法在位置 3 编码字符 u'\ufffd':序数不在范围内(128)[重复]

【中文标题】UnicodeEncodeError:\'ascii\'编解码器无法在位置 3 编码字符 u\'\\ufffd\':序数不在范围内(128)[重复]【英文标题】:UnicodeEncodeError: 'ascii' codec can't encode character u'\ufffd' in position 3: ordinal not in range(128) [duplicate]UnicodeEncodeError:'ascii'编解码器无法在位置 3 编码字符 u'\ufffd':序数不在范围内(128)[重复] 【发布时间】:2016-10-06 16:07:15 【问题描述】:

我收到编码错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\ufffd' in position 3: ordinal not in range(128)

在以下python(pyspark)代码中,其中row是数据框行:

def rowToLine(row):
  line = str(row[0]).strip()
  columnNum = 44
  for k in xrange(1, columnNum):
    line = line + "\t"
    line = line + str(row[k]).strip()  # encoding error here
  return line

我也尝试了下面的加入:

def rowToLine(row):
  s = "\t"
  return s.join(row)

但是该行的某些值是 int,所以我得到了错误:

TypeError: sequence item 19: expected string or Unicode, int found

有谁知道如何解决这个问题?谢谢!

【问题讨论】:

@Keven,我调查了你提到的问题,但我不清楚如何在不使用 str 的情况下将 row[k] 转换为字符串。有什么建议吗? 没有足够的上下文来说明。你想输出 UTF-8 吗? ISO-8859-1?你的数据一开始是文本的吗? 旁注:您想使用str.join()。它比你现在使用的代码有更好的性能。 "\t".join([ x.encode("utf-8") if isinstance(x, basestring) else x for x in row]) 使用列表组合比使用生成器表达式更快,无论如何都会构建列表,因此在这里使用生成器根本没有优势 【参考方案1】:

感谢大家的建议!

我基本上采用了 Padraic Cunningham 的想法并进行了一些修改来处理 int 情况。下面的代码有效。

def rowToLine(row):
  s = "\t"
  return s.join( x.encode("utf-8") if isinstance(x, basestring) else str(x).encode("utf-8") for x in row)

【讨论】:

以上是关于java \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd 是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

UnicodeEncodeError:'ascii'编解码器无法在位置 3 编码字符 u'\ufffd':序数不在范围内(128)[重复]

uGUI 文本字段,如何删除“替换字符”(uFFFD aka �)?

从代表二进制的字符串转换为浮点数

UnicodeEncodeError: 'gbk' codec can't encode character 'ufffd' in position 3: i(

用空格替换 Unicode 字符“�”

为什么在java 6和java 7中获得character®(U + 00AE)是不同的?