2011-02-14 7 views
2

나는 안드로이드 프로젝트에서 데이터를 추출하는 데이터베이스를 가지고 있습니다. 그곳에 스웨덴 문자 å, ä, ö가있는 텍스트 문자열이 있습니다 : √ • = å, √§ = ä, √δ = ö. 앱의 텍스트 뷰에이 기호를 인쇄하기 전에 이러한 기호를 실제 문자로 변환하는 가장 좋은 방법은 무엇입니까? √ •를 å로 바꾸는 것과 같은 대체가 있습니까? 데이터를 가져 오는 쿼리에 어떻게 입력 할 수 있습니까?Android 앱에 스웨덴 문자를 표시하려면 어떻게해야하나요?

public Cursor getAlternative1(long categoryid, int questionid) { 
       final String MY_QUERY = "SELECT question, image, alternative, questionid, correct FROM tbl_question a INNER JOIN tbl_alternative b ON a._id=b.questionid AND b.categoryid=a.categoryid WHERE a.categoryid=? AND a._id=?"; 

       Cursor cursor = mDb.rawQuery(MY_QUERY, new String[]{String.valueOf(categoryid), String.valueOf(questionid)}); 
       if (cursor != null) { 
         cursor.moveToFirst(); 
       } 
       return cursor; 
      } 

감사합니다!

+0

어떻게 당신이 당신의 데이터베이스에 데이터를 삽입하는 데 도움이 희망 ++ 메모장을 사용하여 파일의 종류를 만들 수 있습니까? 내 스웨덴어 문자를 삽입하면 예상대로 'ListView'에 모든 문자가 출력됩니다. – RivieraKid

+0

이들은 문자를 나타내는 √ • = å, √ § = ä, √δ = ö로 삽입됩니다. 위의 형식이 utf-8과 같은 알려진 형식이거나 내가 이것을 대체해야하는 경우 등은 내가 번역 한 것입니다. – kakka47

+0

좋아, 삽입 할 때처럼 들릴 것 같은데' å', 실제로'√ • = å'를 삽입하십시오 - 정확합니까? 이것을 문자열 리터럴 ('String text = "√ • = å";')으로하거나 안드로이드가 UTF-16 인코딩을 처리하도록 하시겠습니까 ('String text = "å";')? 'String'은 이미 UTF-16으로 인코딩되어 있기 때문에 번역을 직접 처리 할 필요가 없습니다. 이미 여러분의 추가 작업없이 악센트 부호가있는 문자를 처리 할 수 ​​있습니다. – RivieraKid

답변

1

문자열 데이터가 원래 UTF-8으로 인코딩되었지만 MacRoman으로 잘못 해석되는 것으로 보입니다.

먼저해야 할 일은 데이터가 데이터베이스에 올바르게 저장되고 있는지 확인하는 것입니다. SELECT HEX(SomeColumn)을 사용하면 문자열에 저장되는 원시 바이트를 볼 수 있습니다. SQLite의 기본 인코딩은 UTF-8이므로 올바르게 인코딩 된 문자열은 å, C3A4ä, C3B6ö 일 때 이됩니다. E2889AE280A2, E2889AC2A7, E2889AE28882이 표시되면 데이터가 DB에 저장되기 전에 문자 (→ √ •, ä → √ §, → √8)의 오역이 발생합니다. 8C, 8A9A이 표시된 경우 역 오역이 발생합니다.

데이터베이스가 정확하다면 아마 MacRoman 일 때 시스템 인코딩이 UTF-8이라고 생각하는 입출력 루틴 일 것입니다. System.setProperty("file.encoding", "macintosh");과 같은 것을 시도해보십시오.

+0

안녕하세요! 내가 말했듯이 내 데이터베이스 E2889AE280A2, E2889AC2A7, E2889AE28882가 å, ä, ö에 사용되었습니다.따라서 데이터가 DB에 저장되기 전에 잘못된 해석이 발생하면 MacRoman에서 다시 해석해야합니다. db를 변경할 수 없으며, 다른 프로젝트에서 가져 와서 다시 사용합니다. 안개를 제거하고 나를 다른 포맷으로 안내해 주셔서 감사합니다! – kakka47

+1

'str = new String (str.getBytes ("macintosh"), "UTF-8"); – dan04

0

이 조금 오래된 게시물입니다,하지만 당신은 cmd를 쉘 창을 사용하여 SQLite는로 데이터를 가져 오는 경우, 쉘에서이 일을 시도 :

C :> CHCP 65001

이 코드를 변경됩니다 UTF-8

C cmd를 쉘 페이지> sqlite3를 database.db < inserts.sql

inserts.sql은 UTF-8 (BOM WITHOUT CHARACTER!) 삽입물의 서열이다

. 당신은

그것이