场景说明

    Jni环境下使用sqlite3存储用户数据,存储的是UTF-8格式,读取数据库,转换为GBK显示中文。

解决思路

    方案1:使用自带的iconv库,不支持GBK转码,详细可参考相关的博客以及测试代码

    方案2:使用GNU的iconv编译作为NDK使用,最终解决问题,建立的iconv库的mk文件如下:

LOCAL_PATH:= $(call my-dir)

#libiconv.so

include $(CLEAR_VARS)

 

LOCAL_MODULE := libueiconv

LOCAL_CFLAGS := \

  -Wno-multichar \

  -DAndroid \

  -DLIBDIR="c" \

  -DBUILDING_LIBICONV \

  -DIN_LIBRARY

LOCAL_SRC_FILES := \

  libcharset/lib/localcharset.c \

  lib/iconv.c \

  lib/relocatable.c

LOCAL_C_INCLUDES += \

  $(LOCAL_PATH)/include \

  $(LOCAL_PATH)/libcharset \

  $(LOCAL_PATH)/lib \

  $(LOCAL_PATH)/libcharset/include \

  $(LOCAL_PATH)/srclib

include $(BUILD_SHARED_LIBRARY)