n00*_*bot 5 java substring utf-8
我用UTF-8编码从流中读取了一些数据
String line = new String(byteArray, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
然后试着找一些子序列
int startPos = line.indexOf(tag) + tag.length();
int endPos = line.indexOf("/", startPos);
Run Code Online (Sandbox Code Playgroud)
并削减它
String name = line.substring(startPos, endPos);
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,它工作正常,但有时结果被打破.例如,输入名称,如"????????"我有像值"?????????","?????????","?????????"等好像代理对随机打破了某些原因.我从1000中得到了4次.
怎么解决?我是否需要使用其他String方法而不是indexOf()+ substring()或者对我的结果使用一些编码/解码魔法?
出现此问题的原因是流被读取为字节块,有时会分割多字节 UTF-8 字符。
通过将 InputStream 包装在 InputStreamReader 中,您将读取字符块(而不是字节块),并且多字节 UTF-8 字符将保留下来。