2015-01-29 3 views
0

ADK를 처음 사용했습니다. 최근에 다른 장치에서 문자열을 가져 오는 프로그램을 작성했습니다. 중국어 문자열을 제외하고는 괜찮습니다. 누구나 이 (가)이 문제를 해결할 수 있습니까?Android 용 FileInputStream 문제

my codes look like this 
mFileDescriptor = mUsbManager.openAccessory(mAccessory); 

FileDescriptor fd = mFileDescriptor.getFileDescriptor(); 

mInputStream = new FileInputStream(fd); 

byte[] b = new byte[512]; 
int n; 
String str; 

while ((n = mInputStream.read(b)) != -1) 
{ 
...... 
str = (new String(b, 0, n, Charset.forName("UTF-8"))); 
...... 
} 

답변

0

중국어는 멀티 바이트 문자로 유니 코드로 표시됩니다. 따라서 올바르게 읽으려면 멀티 바이트 문자 인코딩 개념을 이해하고 해석 할 수있는 특정 판독기 개체를 사용해야합니다.

기본적으로, 당신은 같은 것을 할 필요가 : 응답에 대한

try { 
    BufferedReader bufReader = new BufferedReader(
     new InputStreamReader(inputstream,Charset.forName("UTF-8"))); 
    String line = null; 
    while ((line= bufReader.readLine())!= null) { 
     System.out.println(line); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

감사합니다. 나는 그것을 수정했지만 여전히 작동하지 않습니다. 내가 잘못 됐어? mFileDescriptor = mUsbManager.openAccessory (mAccessory); (mFileDescriptor! = null) mInputStream = 새 FileInputStream (fd); BufferedReader bufReader = 새로운 BufferedReader (새로운 InputStreamReader (mInputStream, Charset.forName ("UTF-8"))); while ((str = bufReader.readLine())! = null) { } –

+0

아, 나는 당신이 AOA를 사용하여 USB 액세서리를 다루고 있음을 알고 있습니다. 음, UsbManager에서 해당 InputStream을 사용하여 대기중인 문제가 있습니다. 이 스트림은 스트림 객체에 대한 JAVA 사양과 다소 일치하지만 내 경험에 따르면 일반적인 디스크 파일을 감싸는 일반적인 InputStream 객체는 아닙니다. 해당 입력 스트림에서 읽는 데이터를 먼저 파일에 쓰고 파일에 상당한 양의 데이터가 있으면 위의 방법을 사용하여 파일을 읽으십시오. –

+0

많은 도움을 주셔서 감사합니다. 먼저 파일에 문자열을 쓰려고합니다. –