【发布时间】:2012-06-14 17:58:34
【问题描述】:
我已经实现了一个服务来监听通过 ADB 发出的命令。通过 ADB 发送的命令示例如下所示:
adb shell am startservice -a com.testandroid.SEND_SMS -e number 123123123 -e message "åäö"
现在,这里的问题是字符串“åäö”的编码似乎搞砸了。如果我将该字符串附加并立即将其输出到日志中,我会得到一个正方形“[]”,未知字符。如果我发送此消息,我会在消息应用程序中获得中文字符。只要我坚持使用非元音变字符(我猜是 ASCII),一切正常。
我正在使用 Windows 7 和命令行。我没有触及命令行的编码,我试图通过获取字节字符来处理额外的字符串,将 UTF-8 作为编码参数传入,然后创建一个新的字符串传入 UTF-8 作为编码参数也有。不过没有骰子。
使用 getBytes() 时字节的值是 å: -27, ä: -92, ö: -74
我怎样才能让它演奏得很好,以便我至少可以使用变音符号?
所有这些都可以在 Linux 中完美运行。
【问题讨论】:
-
嗯,cmd.exe 和 PowerShell 在编码方面存在问题,尤其是在传递命令时,例如:“adb shell am startservice -a nu.app.DO_MESSAGE -e ints 123 -e message 'åäöÅÄÖ'",因为不可能让这个字符串正确显示。我已将其范围缩小到 cmd.exe 发出 adb-command 之间的某个位置,adb-command 又将命令传递给我设备上的 shell。当我通过键入“adb shell”“手动”传递字符串时,打开 shell 命令提示符,然后发出“am startservice...”命令,一切正常。
-
您是否测试过将代码页更改为 UTF-8 后是否有效? stackoverflow.com/questions/388490/…
-
是的,我有。我已经尝试了几个不同的代码页,看看是否有任何效果,唉,什么都没有。它一直给我同样的不可读的字符。当我输入“åäöÅÄÖ”时,shell 似乎会将其中一些字符转换为控制代码,因为我得到的输出是“夶ńր_=/system/bin/app_process”,这是错误的。跨度>