Вопрос о кодировке charset и ICU4C - PullRequest
0 голосов
/ 07 марта 2011

Я использую CTS на устройстве с Android-устройством (базовый код - Android 2.3), но следующий случай не удался:

java.io.UnsupportedEncodingException: GB18030 at java.nio.charset.Charset.forNameUEE(Charset.java:317)
at java.nio.charset.Charset.forNameUEE(Charset.java:317)
at java.lang.String.getBytes(String.java:973)
at org.apache.harmony.luni.tests.java.lang.StringBufferTest.test_toString(StringBufferTest.java:101)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
at java.nio.charset.Charset.forName(Charset.java:304)
at java.nio.charset.Charset.forNameUEE(Charset.java:315)
at java.nio.charset.Charset.forNameUEE(Charset.java:317)
at java.lang.String.getBytes(String.java:973)
at org.apache.harmony.luni.tests.java.lang.StringBufferTest.test_toString(StringBufferTest.java:101)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
at java.nio.charset.Charset.forName(Charset.java:304)
at java.nio.charset.Charset.forNameUEE(Charset.java:315)

Пока я запускаю тот же тест на эмуляторе Android SDK 2.3.3, прошло.

Затем я сравнил исходный код между Android 2.3.3 и моим кодом, ничего другого.Но я думаю, что должно быть что-то другое, чего я не заметил.Затем я обнаружил, что эта проблема связана с ICU4C, но ICU4C очень сложен. Может ли кто-нибудь подсказать мне, как отследить эту проблему?Или как мне отследить проблему?

Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 19 марта 2011

Я решил этот вопрос.Фактически, это проблема сборки, не вызванная ICU4C.В файле make необходимо указать PRODUCT_LOCALE.Затем после сборки CTS может пройти.

0 голосов
/ 16 мая 2011

Я сделал это с версией icu 4.6.Загрузите icu и привяжите весь код из директорий "common" .c и .cpp в вашем файле android.mk.Создайте статическую библиотеку и скомпилируйте ее со следующими флагами внутри application.mk.

APP_CPPFLAGS: = -DU_COMMON_IMPLEMENTATION -DU_STATIC_IMPLEMENTATION -DU_PALMOS APP_CFLAGS: = -DU_COMMON_IMPLEMENTATION -DU_STATIC_IMPLEMENTATION, поэтому вы работаете с файловой системой (не по умолчанию) * DOS_P_P_P_P_P_P_P_P_P_P_P_P_P_P_P_P_P_P_P_P_P_P_P_PP"U_PALMOS".

Макуси

0 голосов
/ 09 марта 2011

Эта проблема все еще не устранена, я предоставлю больше информации, надеюсь, кто-то может помочь.

  1. При некоторой отладке я обнаружил, что GB18030 не поддерживается, потому что обработчик GB18030 недоступен.

  2. В '/android_root/source/external/icu4c/stubdata/readme.txt', доступных конвертеры на Android можно увидеть (без конвертера GB18030):

    • cnv / *. Cnv - это дополнительные кодировки, необходимые для Android. Это
    • GSM-03.38-2000.cnv
    • .iso-8859_16-2001.cnv
    • DoCoMo-SHIFT_JIS-2007.cnv
    • KDDI-jisx-208-2007.cnv
    • KDDI-SHIFT_JIS-2007.cnv
    • Softbank-jisx-208-2007.cnv
    • Softbank-SHIFT_JIS-2007.cnv

Так что это в основном проблема сборки, кто-нибудь знает, как собрать ICU4C на Android и как добавить конвертер gb18030?

Я пытаюсь собрать ICU4C, но пока не получилось.

...