相关疑难解决方法(0)

获取角色的unicode值

在Java中是否有任何方法可以使Unicode与任何字符等效?例如

假设一种方法getUnicode(char c).getUnicode('÷')应该返回一个电话\u00f7.

java unicode

67
推荐指数
4
解决办法
14万
查看次数

读UTF-8 - BOM标记

我正在通过FileReader读取文件 - 该文件是UTF-8解码的(带有BOM)现在我的问题是:我读取文件并输出一个字符串,但遗憾的是BOM标记也输出了.为什么会这样?

fr = new FileReader(file);
br = new BufferedReader(fr);
    String tmp = null;
    while ((tmp = br.readLine()) != null) {
    String text;    
    text = new String(tmp.getBytes(), "UTF-8");
    content += text + System.getProperty("line.separator");
}
Run Code Online (Sandbox Code Playgroud)

第一行后的输出

?<style>
Run Code Online (Sandbox Code Playgroud)

java encoding file

62
推荐指数
6
解决办法
7万
查看次数

在Windows上检查Java中文件是否为空的最有效方法

我试图在Windows上用Java检查日志文件是否为空(意味着没有错误).到目前为止,我尝试过使用2种方法.

方法1(失败)

FileInputStream fis = new FileInputStream(new File(sLogFilename));  
int iByteCount = fis.read();  
if (iByteCount == -1)  
    System.out.println("NO ERRORS!");
else
    System.out.println("SOME ERRORS!");
Run Code Online (Sandbox Code Playgroud)

方法2(失败)

File logFile = new File(sLogFilename);
if(logFile.length() == 0)
    System.out.println("NO ERRORS!");
else
    System.out.println("SOME ERRORS!");
Run Code Online (Sandbox Code Playgroud)

现在,当日志文件为空(没有内容)时,这些方法都会失败,但文件大小不为零(2个字节).

检查文件是否为空的最有效最准确的方法是什么?我要求效率,因为我必须循环检查文件大小数千次.

注意:文件大小只会徘徊在几到10 KB左右!

方法3(失败)

按照@ Cygnusx1的建议,我也试过使用FileReader过,但没有成功.这是片段,如果有人感兴趣的话.

Reader reader = new FileReader(sLogFilename);
int readSize = reader.read();
if (readSize == -1)
    System.out.println("NO ERRORS!");
else
    System.out.println("SOME ERRORS!");
Run Code Online (Sandbox Code Playgroud)

java filesystems file-io logging file

25
推荐指数
2
解决办法
10万
查看次数

将Scala中的所有BufferedReader行读入字符串

我怎样才能读取所有一中BufferedReader的线,并存储为一个字符串?

 val br = new BufferedReader(...)
 val str: String = getAllLines(br) // getAllLines() -- is where I need help
Run Code Online (Sandbox Code Playgroud)

与此问题类似.

scala bufferedreader

24
推荐指数
1
解决办法
1万
查看次数

如何从Java中删除XML文件中的BOM

我需要有关从UTF-8文件中删除BOM的方法的建议,并创建其余xml文件的副本.

java byte-order-mark utf-8

23
推荐指数
1
解决办法
2万
查看次数

使用Java删除BOM字符

使用Java作为vis 的等价物需要发生什么

:set nobomb
Run Code Online (Sandbox Code Playgroud)

假设BOM来自我正在阅读的文件.

java vi byte-order-mark

17
推荐指数
2
解决办法
3万
查看次数

使用java读取unicode文本文件

真的很简单的问题.我需要在Java程序中读取Unicode文本文件.

我习惯使用普通的ASCII文本与BufferedReader FileReader组合,这显然不起作用:(

我知道我可以使用Buffered Reader以"传统"方式读取字符串,然后使用以下内容进行转换:

temp = new String(temp.getBytes(), "UTF-16");
Run Code Online (Sandbox Code Playgroud)

但有没有办法将Reader包装在'转换器'中?

编辑:文件以FF FE开头

java string unicode ascii

12
推荐指数
3
解决办法
5万
查看次数

从String中删除"空"字符

我正在使用一个框架,它会不时地返回带有"空"字符的格式错误的字符串.

例如,"foobar"表示为:[,f,o,o,b,a,r]

第一个字符不是空格(''),因此System.out.printlin()将返回"foobar"而不是"foobar".然而,String的长度是7而不是6.显然这使得大多数String方法(equals,split,substring,..)无用.有没有办法从字符串中删除空字符?

我试着像这样构建一个新的String:

StringBuilder sb = new StringBuilder();
for (final char character : malformedString.toCharArray()) {
  if (Character.isDefined(character)) {
    sb.append(character);
  }
}
sb.toString();
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.与以下代码相同:

StringBuilder sb = new StringBuilder();
for (final Character character : malformedString.toCharArray()) {
  if (character != null) {
    sb.append(character);
  }
}
sb.toString();
Run Code Online (Sandbox Code Playgroud)

我也无法检查这样的空字符:

   if (character == ''){
     //
   }
Run Code Online (Sandbox Code Playgroud)

显然字符串有问题..但我无法更改我正在使用的框架或等待它们修复它(如果它是框架中的错误).我需要处理这个String并对其进行sanatize.

有任何想法吗?

java character

12
推荐指数
3
解决办法
3万
查看次数

当WebService返回代码403时,如何在CXF中获取HTTP响应主体?

我正在尝试使用Apache的CXF库为WebService开发客户端应用程序.在此特定服务器实现中,当请求中缺少某些数据(例如,某人的ID号)时,它返回HTTP代码403(禁止),但是响应正文包含特定于应用程序的错误详细信息作为肥皂错误.

举个例子,这是我使用SoapUI收集的响应:

SoapUI中的响应
正如您在突出显示的文本中所看到的,此请求中有一个响应正文.


现在我需要从我的应用程序中检索响应主体.我尝试在不同的阶段使用拦截器,例如SEND_ENDINGPOST_PROTOCOL,但似乎无法在Message给予该handleMessage()方法的参数中找到它.

我错过了什么?

这是我得到的异常和堆栈跟踪:

org.apache.cxf.interceptor.Fault: Could not send Message.
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:67)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
    at com.sun.proxy.$Proxy36.arquivo(Unknown Source)
    at br.com.dgsistemas.TesteWS.main(TesteWS.java:133)
Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '403: Forbidden' when communicating with https://www.wsrestrito.caixa.gov.br/siies/WsSolicitacao
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.doProcessResponseCode(HTTPConduit.java:1620)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1627)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1572)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1373)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:673)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
    ... 9 more
Run Code Online (Sandbox Code Playgroud)

谢谢!

java soap cxf

7
推荐指数
1
解决办法
1068
查看次数

为什么org.apache.xerces.parsers.SAXParser不会跳过utf8编码的xml中的BOM?

我有一个带utf8编码的xml.此文件包含BOM作为文件的开头.所以在解析过程中我遇到了org.xml.sax.SAXParseException:prolog中不允许使用内容.我无法从文件中删除这3个字节.我无法将文件加载到内存中并在此处删除它们(文件很大).因此,出于性能原因,我正在使用SAX解析器,如果它们在""标记之前存在,则只想跳过这3个字节.我应该为此继承InputStreamReader吗?

我是java的新手 - 请告诉我正确的方法.

java byte-order-mark xerces

6
推荐指数
1
解决办法
5673
查看次数