场景说明
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)