0 0

如何在Android中的String使用中文10

Hi Guys,

我正写一个程序获取码流中的metadata, 但是当Metadata中含有中文字符时,系统就会出错,metadata不能正常解析,且导致进程死掉(比如 mAlbum="张学友")。



有谁遇到过这种问题么?如何解决?




        private String mAlbum;
        private String mAuthor;
        private String mArtist;
        private String mDate;
        private String mTracks;
        private String mCodec;
        private String mComment;
        private String mComposer;
        private String mCopyright;
        private String mGenre;
        private String mIsDRMCrippled;
        private String mRating;
        private String mTitle;
        private String mYear;


.......................
                mTitle = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_TITLE);
                mCodec = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_CODEC);
                mDuration = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_DURATION);
                mAlbum = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_ALBUM);
                mAuthor = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_AUTHOR);
                mArtist = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_ARTIST);
                mComment = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_COMMENT);
                mYear = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_YEAR);
                mDate = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_DATE);

问题补充:
谢谢您的回复,我也想到了可能是Unicode的问题。
不过我现在是要从 码流中读出数据并显示它,而不是写入这些数据。
请问有什么转换函数么?
问题补充:
谢谢lovewhzlq。

我试过你提到的方法,但是失败了。
我想问题出在:
mArtist = retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_ARTIST);

当调用retriever.extractMetadata
(MediaMetadataRetriever.METADATA_KEY_ARTIST)时,系统就已经出错了。还没有到我做Unicode转换。

我的代码:
mArtist = decodeUnicode (retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST));
.................

/*****************************************************
     * Description:transfer Unicode to Chinese
     * Input: Unicode string
     * Output: New transfered string
     *****************************************************/
    private String decodeUnicode( final String dataStr ) {
        int start = 0;
        int end = 0;
        final StringBuffer buffer = new StringBuffer();
        while( start > -1 ) {
            end = dataStr.indexOf( "\\\\u", start + 2 );
            String charStr = "";
            if( end == -1 ) {
                charStr = dataStr.substring( start + 2, dataStr.length() );
            } else {
                charStr = dataStr.substring( start + 2, end);
            }
            char letter = (char) Integer.parseInt( charStr, 16 ); // 16-bit parse
            buffer.append( new Character( letter ).toString() );
            start = end;
        }
        return buffer.toString();
    }
2009年7月21日 11:01

3个答案 按时间排序 按投票排序

0 0

网上一搜索多了去
http://www.cnitblog.com/neatstudio/archive/2006/07/28/14315.html


public class Conversion {
   
    /**
     * 中文转unicode
     * @param str
     * @return 反回unicode编码
     */
    public String  chinaToUnicode(String str)
    {
        String result = null;
        for (int i = 0; i < str.length(); i++)
        {
            int chr1 = (char) str.charAt(i);
            result  += "\\u" + Integer.toHexString(chr1);           
        }
        return result;
    }

    /**
     * unicode转中文
     * @param  str
     * @return 中文
     */
     public void unicodeToChinese(String str)
     {        
        
         for(char c : str.toCharArray())            
             
         System.out.print(c);   
        
     }
    
     public static void main(String args[])
     {      
        //unicode转中文
         String str = "\u767b\u5f55\u793e\u533a";
         Conversion  con = new Conversion();
        
         con.unicodeToChinese(str);           
         //for(char c : str.toCharArray())        
         //System.out.print(c);
                 
    }
    
}

2009年7月21日 12:03
0 0

mAlbum="\u5F20\u5B66\u53CB"

2009年7月21日 11:14
0 0

把中文字符转换成unicode编码的字符

2009年7月21日 11:13

相关推荐

    android GBK转换为String

    在Android开发中,字符编码是一个重要的考虑因素,尤其是在处理中文字符时。GBK是GB2312编码的一个扩展,主要用于简体中文,而Unicode是一种通用的字符编码标准,支持全球多种语言,包括简体和繁体中文。在Android...

    android jni 中文字符传递demo

    总之,这个"android jni 中文字符传递demo"涵盖了在Android应用中使用JNI处理中文字符的核心技术,这对于那些需要在Java和C/C++之间交换中文数据的开发者来说,是一个非常有价值的参考资料。通过深入学习和实践这个...

    Android String.xml标签在java代码中的引用

    本文将详细介绍如何在Android项目中使用`strings.xml`文件,并通过具体的实例来解释如何在Java代码中引用这些字符串资源。 #### strings.xml文件结构与内容 `strings.xml`文件位于项目的`res/values/`目录下,它...

    android String Resouce资源使用案例

    在Android开发中,String Resource是应用中用于存储文本内容的重要组成部分。它允许开发者将字符串集中管理,便于维护、多语言支持以及代码的可读性。本篇将详细讲解Android String Resource资源的使用方法,以及...

    Android中数字转中文,金额转大写

    在Android开发中,有时我们需要将数字转换为中文或者将金额以大写的格式显示,这在财务应用或一些需要中文表示数字的场景中尤其常见。本文将深入探讨如何在Android环境中实现这一功能,包括数字转中文以及数字金额转...

    Android代码的String硬编码抽取

    在Android应用开发中,String硬编码是指将字符串直接写入Java源代码或XML布局文件中的做法。这样的做法虽然简单快捷,但在多语言支持、代码维护和版本管理等方面存在诸多问题。"Android代码的String硬编码抽取"是一...

    Android中文按拼音排序

    在Java和Android中,我们可以使用Pinyin4j、HanLP等第三方库,或者使用Android内置的`PinYinHelper`类(如果API等级支持)来转换汉字到拼音。 1. **Pinyin4j** 是一个流行的Java库,可以处理汉字到拼音的转换。使用...

    让android的LogCat支持中文输出

    这样,无论是在Android Studio的LogCat中,还是通过adb命令行查看日志,都能正确显示中文内容。 总的来说,让Android的LogCat支持中文输出涉及对日志输出方式进行调整、选择合适的日志库和优化IDE设置。通过这些...

    Android客户端发送请求中文乱码问题完美解决

    在Android客户端中,我们可以使用URLEncoder.encode()方法对需要传输的中文参数进行编码。URLEncoder.encode()方法可以将字符串编码为application/x-www-form-urlencoded MIME格式,这样可以确保中文字符被正确地...

    成功解决 Android 下载中文文件名

    在 Android 应用程序中,下载服务器上的中文文件名文件时,可能会出现乱码问题。本文将介绍如何解决 Android 下载中文文件名问题,确保文件名正确地下载到 Android 设备上。 问题背景 在 Android 应用程序中,我们...

    String_Resources中定义一些特殊字符串

    在Android开发中,String Resources是用于管理应用内所有文本内容的重要工具。它允许开发者在一个集中的地方定义字符串,便于维护、本地化以及动态格式化。本文将深入探讨Android String Resources的使用,包括国际...

    java汉字转拼音,android汉字转拼音,汉字转拼音首字母,汉字转ASCII

    在IT行业中,尤其是在Java和Android开发中,有时候我们需要将汉字转换为拼音或ASCII码,以便进行文本处理、搜索优化、编码转换等工作。本篇将详细探讨如何在Java和Android环境中实现汉字转拼音以及汉字转ASCII的功能...

    Android-Android中文拼音排序以及中文笔划排序和英文排序

    在Android开发中,为了提供良好的用户体验,经常需要对中文数据进行有效的排序,特别是在实现类似微信登录选择国家地区列表的功能时。这个功能不仅涉及到中文的拼音排序,还可能涉及到中文笔划排序,甚至英文排序。...

    Android 中英文混合排序

    在"Android 中英文混合排序"这个主题中,我们需要理解如何利用Java(Android的主要编程语言)中的排序机制,结合中文转拼音的方法,来实现这一功能。下面我们将详细探讨这一过程。 首先,Android系统基于Java虚拟机...

    Android读取中文文件乱码解决方法

    在开发Android应用时,经常需要处理中文字符或包含中文的文件。如果处理不当,可能会遇到中文乱码的问题,尤其是在读取本地文件或者从网络下载文件时更为常见。本文将详细介绍如何解决Android平台上的中文乱码问题,...

    Android-JavaAndroid中文转拼音稳如狗

    在Android应用开发中,有时我们需要将中文字符转换为对应的拼音,比如实现搜索功能时的模糊匹配,或者在处理中文文本时进行某些特定操作。Java作为Android的主要编程语言,提供了多种方式来实现中文到拼音的转换。这...

    Android一键中英文切换

    在Android系统中,字符串资源通常存储在res/values目录下的strings.xml文件中,针对不同的语言,我们可以创建不同的values目录,如values-en(英语)和values-zh-rCN(简体中文)。当系统检测到语言变更时,会自动...

    Android中文API查询和JAVA开发API

    在这个主题中,我们主要关注的是针对Android开发的中文API以及Java开发的中文API。 首先,让我们深入了解一下Java API。JDK_API_1_6_zh_CN.CHM是一个包含Java Development Kit(JDK)1.6版本的中文版API文档。这个...

    Android汉字转拼音例子

    - `pinyin4j`:这是一个Java库,也可以在Android中使用,提供了将汉字转换为拼音的功能,支持声调标记。 - `android-pinyin4j`:专门为Android优化的版本,体积小,适合嵌入式应用。 - `libpinyin`:一个C++编写...

Global site tag (gtag.js) - Google Analytics