-
如何在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个答案 按时间排序 按投票排序
-
网上一搜索多了去
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
相关推荐
在Android开发中,字符编码是一个重要的考虑因素,尤其是在处理中文字符时。GBK是GB2312编码的一个扩展,主要用于简体中文,而Unicode是一种通用的字符编码标准,支持全球多种语言,包括简体和繁体中文。在Android...
总之,这个"android jni 中文字符传递demo"涵盖了在Android应用中使用JNI处理中文字符的核心技术,这对于那些需要在Java和C/C++之间交换中文数据的开发者来说,是一个非常有价值的参考资料。通过深入学习和实践这个...
本文将详细介绍如何在Android项目中使用`strings.xml`文件,并通过具体的实例来解释如何在Java代码中引用这些字符串资源。 #### strings.xml文件结构与内容 `strings.xml`文件位于项目的`res/values/`目录下,它...
在Android开发中,String Resource是应用中用于存储文本内容的重要组成部分。它允许开发者将字符串集中管理,便于维护、多语言支持以及代码的可读性。本篇将详细讲解Android String Resource资源的使用方法,以及...
在Android开发中,有时我们需要将数字转换为中文或者将金额以大写的格式显示,这在财务应用或一些需要中文表示数字的场景中尤其常见。本文将深入探讨如何在Android环境中实现这一功能,包括数字转中文以及数字金额转...
在Android应用开发中,String硬编码是指将字符串直接写入Java源代码或XML布局文件中的做法。这样的做法虽然简单快捷,但在多语言支持、代码维护和版本管理等方面存在诸多问题。"Android代码的String硬编码抽取"是一...
在Java和Android中,我们可以使用Pinyin4j、HanLP等第三方库,或者使用Android内置的`PinYinHelper`类(如果API等级支持)来转换汉字到拼音。 1. **Pinyin4j** 是一个流行的Java库,可以处理汉字到拼音的转换。使用...
这样,无论是在Android Studio的LogCat中,还是通过adb命令行查看日志,都能正确显示中文内容。 总的来说,让Android的LogCat支持中文输出涉及对日志输出方式进行调整、选择合适的日志库和优化IDE设置。通过这些...
在Android客户端中,我们可以使用URLEncoder.encode()方法对需要传输的中文参数进行编码。URLEncoder.encode()方法可以将字符串编码为application/x-www-form-urlencoded MIME格式,这样可以确保中文字符被正确地...
在 Android 应用程序中,下载服务器上的中文文件名文件时,可能会出现乱码问题。本文将介绍如何解决 Android 下载中文文件名问题,确保文件名正确地下载到 Android 设备上。 问题背景 在 Android 应用程序中,我们...
在Android开发中,String Resources是用于管理应用内所有文本内容的重要工具。它允许开发者在一个集中的地方定义字符串,便于维护、本地化以及动态格式化。本文将深入探讨Android String Resources的使用,包括国际...
在IT行业中,尤其是在Java和Android开发中,有时候我们需要将汉字转换为拼音或ASCII码,以便进行文本处理、搜索优化、编码转换等工作。本篇将详细探讨如何在Java和Android环境中实现汉字转拼音以及汉字转ASCII的功能...
在Android开发中,为了提供良好的用户体验,经常需要对中文数据进行有效的排序,特别是在实现类似微信登录选择国家地区列表的功能时。这个功能不仅涉及到中文的拼音排序,还可能涉及到中文笔划排序,甚至英文排序。...
在"Android 中英文混合排序"这个主题中,我们需要理解如何利用Java(Android的主要编程语言)中的排序机制,结合中文转拼音的方法,来实现这一功能。下面我们将详细探讨这一过程。 首先,Android系统基于Java虚拟机...
在开发Android应用时,经常需要处理中文字符或包含中文的文件。如果处理不当,可能会遇到中文乱码的问题,尤其是在读取本地文件或者从网络下载文件时更为常见。本文将详细介绍如何解决Android平台上的中文乱码问题,...
在Android应用开发中,有时我们需要将中文字符转换为对应的拼音,比如实现搜索功能时的模糊匹配,或者在处理中文文本时进行某些特定操作。Java作为Android的主要编程语言,提供了多种方式来实现中文到拼音的转换。这...
在Android系统中,字符串资源通常存储在res/values目录下的strings.xml文件中,针对不同的语言,我们可以创建不同的values目录,如values-en(英语)和values-zh-rCN(简体中文)。当系统检测到语言变更时,会自动...
在这个主题中,我们主要关注的是针对Android开发的中文API以及Java开发的中文API。 首先,让我们深入了解一下Java API。JDK_API_1_6_zh_CN.CHM是一个包含Java Development Kit(JDK)1.6版本的中文版API文档。这个...
- `pinyin4j`:这是一个Java库,也可以在Android中使用,提供了将汉字转换为拼音的功能,支持声调标记。 - `android-pinyin4j`:专门为Android优化的版本,体积小,适合嵌入式应用。 - `libpinyin`:一个C++编写...