안녕하세요

 

제가 장르별 mp3 리스트를 출력하려 하는데 잘 안되서 질문 드립니다.

 

  String[] mCursorCols = new String[] {

              // "audio._id AS _id",             // index must match IDCOLIDX below
               MediaStore.Audio.Media.ARTIST,
               MediaStore.Audio.Media.ALBUM,
               MediaStore.Audio.Media.TITLE,
               MediaStore.Audio.Media.DATA,
               MediaStore.Audio.Media.MIME_TYPE,
               MediaStore.Audio.Media.ALBUM_ID,
               MediaStore.Audio.Media.DATA,
               MediaStore.Audio.Media.ARTIST_ID,
               "genre_name"};

 

 

  String where = "genre_name" + " = '" + PlayerVariables.currentGenre + "'";


  Cursor mDedatilCursor = mContentResolver
    .query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
      mCursorCols, where,
      null, null);

 

위처럼 커서에서 장르네임 이 일치하는 줄을 가져오는 쿼리 이구요??

 

근데 일반 적인 장르이름은 잘 되는데 장르이름에 특수문자(??)가 들어간 것들이 에러가 남니다.

 

장륵 목록은 이렇습니다.

 

이런식으로 되어 있습니다.

 

 세가지 값을 가져왓구요  타이틀 장르 장르문자열의길이

09-10 15:03:24.820: D/title  genre(5251): 감사  발라드 3
09-10 15:03:24.820: D/title  genre(5251): 애인있어요-김진호  <unknown> 9
09-10 15:03:24.820: D/title  genre(5251): Hearing my memory  Pop 3
09-10 15:03:24.820: D/title  genre(5251): 태양  드라마�� 4
09-10 15:03:24.820: D/title  genre(5251): 생각이나  Rock 4
09-10 15:03:24.820: D/title  genre(5251): 눈부신 눈물  팝 > 발라드 (Ballad), 팝 > 알앤비 (R&B) 31
09-10 15:03:24.820: D/title  genre(5251): 그대를 사랑합니다  kpop.321.cn 11
09-10 15:03:24.830: D/title  genre(5251): 비밀 (Special Vocal. 박완규)  록 1
09-10 15:03:24.830: D/title  genre(5251): 해바라기  발라드�� 4
09-10 15:03:24.830: D/title  genre(5251): 너란 사람  드라마 3
09-10 15:03:24.830: D/title  genre(5251): 바람이 분다  팝 > 발라드 (Ballad) 16
09-10 15:03:24.830: D/title  genre(5251): 추억 다 지워  Jazz 4
09-10 15:03:24.830: D/title  genre(5251): 애상  Folk 4
09-10 15:03:24.830: D/title  genre(5251): Headache  Dance 5
09-10 15:03:24.830: D/title  genre(5251): Good Day (Japanese Ver.)  J-Pop 5
09-10 15:03:24.830: D/title  genre(5251): 마녀가 된 이유  Dance Pop 9

 

이중에서

 

드라마��

 

발라드��  이 것들만 선택하면 에러가 남니다. sql 에러가 뜨는데요.

 

09-10 15:06:00.560: E/AndroidRuntime(5251): FATAL EXCEPTION: main
09-10 15:06:00.560: E/AndroidRuntime(5251): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chocolate.djamp_std/com.chocolate.djamp_std.list.GenreDetail}: android.database.sqlite.SQLiteException: unrecognized token: "'드라마": , while compiling: SELECT artist, album, title, _data, mime_type, album_id, _data, artist_id, genre_name FROM audio WHERE (genre_name = '드라마��')
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1818)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.app.ActivityThread.access$500(ActivityThread.java:122)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.os.Looper.loop(Looper.java:132)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.app.ActivityThread.main(ActivityThread.java:4126)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at java.lang.reflect.Method.invokeNative(Native Method)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at java.lang.reflect.Method.invoke(Method.java:491)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at dalvik.system.NativeStart.main(Native Method)
09-10 15:06:00.560: E/AndroidRuntime(5251): Caused by: android.database.sqlite.SQLiteException: unrecognized token: "'드라마": , while compiling: SELECT artist, album, title, _data, mime_type, album_id, _data, artist_id, genre_name FROM audio WHERE (genre_name = '드라마��')
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:180)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:369)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.content.ContentProviderProxy.query(ContentProviderNative.java:405)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.content.ContentResolver.query(ContentResolver.java:302)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at com.chocolate.djamp_std.list.GenreDetail.initialize(GenreDetail.java:80)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at com.chocolate.djamp_std.list.GenreDetail.onCreate(GenreDetail.java:46)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
09-10 15:06:00.560: E/AndroidRuntime(5251):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782)
09-10 15:06:00.560: E/AndroidRuntime(5251):  ... 11 more

이거 해결방법 혹시 아시는 분 계신가요...   좀 아시는 분한테 물어보니까 sql 문에 특수문자가 등어가서 그런거라고 하시면서,

 

유니코드로 바꿔야 한다는데... 도통 잘 모르겠네요... ^^