将字符串的编码格式转换为utf-8

方式一:


  1. /**
  2. * 将字符串的编码格式转换为utf-8
  3. *
  4. * @param str
  5. * @return Name = new
  6. * String(Name.getBytes("ISO-8859-1"), "utf-8");
  7. */
  8. public static String toUTF8(String str) {
  9. if (isEmpty(str)) {
  10. return "";
  11. }
  12. try {
  13. if (str.equals(new String(str.getBytes("GB2312"), "GB2312"))) {
  14. str = new String(str.getBytes("GB2312"), "utf-8");
  15. return str;
  16. }
  17. } catch (Exception exception) {
  18. }
  19. try {
  20. if (str.equals(new String(str.getBytes("ISO-8859-1"), "ISO-8859-1"))) {
  21. str = new String(str.getBytes("ISO-8859-1"), "utf-8");
  22. return str;
  23. }
  24. } catch (Exception exception1) {
  25. }
  26. try {
  27. if (str.equals(new String(str.getBytes("GBK"), "GBK"))) {
  28. str = new String(str.getBytes("GBK"), "utf-8");
  29. return str;
  30. }
  31. } catch (Exception exception3) {
  32. }
  33. return str;
  34. }
  35. /**
  36. * 判断是否为空
  37. *
  38. * @param str
  39. * @return
  40. */
  41. public static boolean isEmpty(String str) {
  42. // 如果字符串不为null,去除空格后值不与空字符串相等的话,证明字符串有实质性的内容
  43. if (str != null && !str.trim().isEmpty()) {
  44. return false;// 不为空
  45. }
  46. return true;// 为空
  47. }


java获取:
String name = TypeUtil.toUTF8(request.getParameter("name"));

        </div>

乱码的另一种解决办法:

request.setCharacterEncoding("UTF-8"),这句话熟悉么,这句话的意思是:用"utf-8"编码对客户端的请求进行重新解码。

在步骤2之后(或步骤3中)执行,那么接收到的参数也不会乱码啦。

一个小例子:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

import java.io.UnsupportedEncodingException;

public class ConvertEncodingFormat {

  /**

   * 将一段错误解码的字符串重新解码

   */

  public static String convertEncodingFormat(String str, String formatFrom, String FormatTo) {

    String result = null;

    if (!(str == null || str.length() == 0)) {

      try {

        result = new String(str.getBytes(formatFrom), FormatTo);

      } catch (UnsupportedEncodingException e) {

        e.printStackTrace();

      }

    }

    return result;

  }

  /**

   * test

   */

  public static void main(String[] args) {

     // utf-8编码

    String str = "你好,少年!";

    // UTF-8编码的byte流强行用iso-8859-1解码,毫无疑问的乱码了

    String str1 = convertEncodingFormat(str, "UTF-8", "iso-8859-1");

    System.out.println(str1);

    // 将str1再转化为byte流,重新用UTF-8解码,乱码问题解决

    String str2 = convertEncodingFormat(str1, "iso-8859-1", "UTF-8");

    System.out.println(str2);

  }

}

java字符串的各种编码转换

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

import java.io.UnsupportedEncodingException;

 

/**

 * 转换字符串的编码

 */

public class ChangeCharset {

 /** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */

 public static final String US_ASCII = "US-ASCII";

 

 /** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */

 public static final String ISO_8859_1 = "ISO-8859-1";

 

 /** 8 位 UCS 转换格式 */

 public static final String UTF_8 = "UTF-8";

 

 /** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */

 public static final String UTF_16BE = "UTF-16BE";

 

 /** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */

 public static final String UTF_16LE = "UTF-16LE";

 

 /** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */

 public static final String UTF_16 = "UTF-16";

 

 /** 中文超大字符集 */

 public static final String GBK = "GBK";

 

 /**

 * 将字符编码转换成US-ASCII码

 */

 public String toASCII(String str) throws UnsupportedEncodingException{

 return this.changeCharset(str, US_ASCII);

 }

 /**

 * 将字符编码转换成ISO-8859-1码

 */

 public String toISO_8859_1(String str) throws UnsupportedEncodingException{

 return this.changeCharset(str, ISO_8859_1);

 }

 /**

 * 将字符编码转换成UTF-8码

 */

 public String toUTF_8(String str) throws UnsupportedEncodingException{

 return this.changeCharset(str, UTF_8);

 }

 /**

 * 将字符编码转换成UTF-16BE码

 */

 public String toUTF_16BE(String str) throws UnsupportedEncodingException{

 return this.changeCharset(str, UTF_16BE);

 }

 /**

 * 将字符编码转换成UTF-16LE码

 */

 public String toUTF_16LE(String str) throws UnsupportedEncodingException{

 return this.changeCharset(str, UTF_16LE);

 }

 /**

 * 将字符编码转换成UTF-16码

 */

 public String toUTF_16(String str) throws UnsupportedEncodingException{

 return this.changeCharset(str, UTF_16);

 }

 /**

 * 将字符编码转换成GBK码

 */

 public String toGBK(String str) throws UnsupportedEncodingException{

 return this.changeCharset(str, GBK);

 }

  

 /**

 * 字符串编码转换的实现方法

 * @param str 待转换编码的字符串

 * @param newCharset 目标编码

 * @return

 * @throws UnsupportedEncodingException

 */

 public String changeCharset(String str, String newCharset)

  throws UnsupportedEncodingException {

 if (str != null) {

  //用默认字符编码解码字符串。

  byte[] bs = str.getBytes();

  //用新的字符编码生成字符串

  return new String(bs, newCharset);

 }

 return null;

 }

 /**

 * 字符串编码转换的实现方法

 * @param str 待转换编码的字符串

 * @param oldCharset 原编码

 * @param newCharset 目标编码

 * @return

 * @throws UnsupportedEncodingException

 */

 public String changeCharset(String str, String oldCharset, String newCharset)

  throws UnsupportedEncodingException {

 if (str != null) {

  //用旧的字符编码解码字符串。解码可能会出现异常。

  byte[] bs = str.getBytes(oldCharset);

  //用新的字符编码生成字符串

  return new String(bs, newCharset);

 }

 return null;

 }

 

 public static void main(String[] args) throws UnsupportedEncodingException {

 ChangeCharset test = new ChangeCharset();

 String str = "This is a 中文的 String!";

 System.out.println("str: " + str);

 String gbk = test.toGBK(str);

 System.out.println("转换成GBK码: " + gbk);

 System.out.println();

 String ascii = test.toASCII(str);

 System.out.println("转换成US-ASCII码: " + ascii);

 gbk = test.changeCharset(ascii,ChangeCharset.US_ASCII, ChangeCharset.GBK);

 System.out.println("再把ASCII码的字符串转换成GBK码: " + gbk);

 System.out.println();

 String iso88591 = test.toISO_8859_1(str);

 System.out.println("转换成ISO-8859-1码: " + iso88591);

 gbk = test.changeCharset(iso88591,ChangeCharset.ISO_8859_1, ChangeCharset.GBK);

 System.out.println("再把ISO-8859-1码的字符串转换成GBK码: " + gbk);

 System.out.println();

 String utf8 = test.toUTF_8(str);

 System.out.println("转换成UTF-8码: " + utf8);

 gbk = test.changeCharset(utf8,ChangeCharset.UTF_8, ChangeCharset.GBK);

 System.out.println("再把UTF-8码的字符串转换成GBK码: " + gbk);

 System.out.println();

 String utf16be = test.toUTF_16BE(str);

 System.out.println("转换成UTF-16BE码:" + utf16be);

 gbk = test.changeCharset(utf16be,ChangeCharset.UTF_16BE, ChangeCharset.GBK);

 System.out.println("再把UTF-16BE码的字符串转换成GBK码: " + gbk);

 System.out.println();

 String utf16le = test.toUTF_16LE(str);

 System.out.println("转换成UTF-16LE码:" + utf16le);

 gbk = test.changeCharset(utf16le,ChangeCharset.UTF_16LE, ChangeCharset.GBK);

 System.out.println("再把UTF-16LE码的字符串转换成GBK码: " + gbk);

 System.out.println();

 String utf16 = test.toUTF_16(str);

 System.out.println("转换成UTF-16码:" + utf16);

 gbk = test.changeCharset(utf16,ChangeCharset.UTF_16LE, ChangeCharset.GBK);

 System.out.println("再把UTF-16码的字符串转换成GBK码: " + gbk);

 String s = new String("中文".getBytes("UTF-8"),"UTF-8");

 System.out.println(s);

 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码

原文链接:https://blog.csdn.net/H12KJGJ/article/details/68065637

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

相关文章

  • JDK1.8、JDK1.7、JDK1.6区别看这里

    这篇文章主要为大家详细介绍了JDK1.8、JDK1.7、JDK1.6中的源码,对比阅读,发现修改问题以及改进点,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    2017-10-10

  • Java获取当前操作系统的信息实例代码

    这篇文章主要介绍了Java获取当前操作系统的信息实例代码,具有一定借鉴价值,需要的朋友可以参考下。

    2017-12-12

  • 生成8位随机不重复的数字编号的方法

    生成随机不重复的数字编号在某些情况下也会用到,本文以生成8位随机不重复的数字编号为例与大家分享下具体的实现过程,感兴趣的朋友可以参考下

    2013-09-09

  • Java数据溢出代码详解

    这篇文章主要介绍了Java数据溢出的相关内容,包括具体代码示例,分析比较详细,希望对大家有所帮助,感兴趣的朋友可以参考下。

    2017-09-09

  • springboot整合H2内存数据库实现单元测试与数据库无关性

    本篇文章主要介绍了springboot整合H2内存数据库实现单元测试与数据库无关性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    2018-01-01

  • Java计算交集,差集,并集的方法示例

    这篇文章主要介绍了Java计算交集,差集,并集的方法,结合实例形式简单分析了java集合运算的简单操作技巧,需要的朋友可以参考下

    2017-10-10

  • java selenium教程之selenium详细介绍

    本文主要介绍Java selenium,这里整理了selenium的一些基本资料,此软件主要用于Web UI自动测试框架,有兴趣的同学可以看一下

    2016-08-08

  • 在Java代码中解析html,获取其中的值方法

    今天小编就为大家分享一篇在Java代码中解析html,获取其中的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    2018-05-05

  • Java读取并下载网络文件的方法

    这篇文章主要为大家详细介绍了Java读取并下载网络文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    2017-08-08

  • Spring的事务机制实例代码

    这篇文章主要介绍了Spring的事务机制实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    2018-02-02

最新评论

大家感兴趣的内容

  • 1java使double保留两位小数的多方
  • 2JAVA8 十大新特性详解
  • 3java.net.SocketException: Conn
  • 4java写入文件的几种方法分享
  • 5Java环境变量的设置方法(图文教程
  • 6JAVA 十六进制与字符串的转换
  • 7java list用法示例详解
  • 8java中File类的使用方法
  • 9JavaWeb实现文件上传下载功能实例
  • 10Java中HashMap和TreeMap的区别深

最近更新的内容

  • Java判断本机IP地址类型的方法
  • java多线程读写文件示例
  • 读取xml文件中的配置参数实例
  • Java虚拟机装载和初始化一个class类代码解
  • Java IO文件后缀名过滤总结
  • Java访问WebService返回XML数据的方法
  • java简单实现复制 粘贴 剪切功能代码分享
  • 如何让Jackson JSON生成的数据包含的中文
  • JavaWeb开发中alias拦截器的使用方法
  • Java RandomAccessFile 指定位置实现文件

众生网络

品牌服务器租用

集思网络

VPS主机

枫信科技

IDC服务商

常用在线小工具

  </div>

原文地址:https://www.cnblogs.com/zhuhui-site/p/10088752.html

时间: 2024-10-16 02:41:29

将字符串的编码格式转换为utf-8的相关文章

[Arduino] 在串口读取多个字符串,并且转换为数字数组

功能如题目.在串口收到逗号分割的6串数字比如100,200,45,4,87,99然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值代码注释很详细了,就不再说明了. //定义一个comdata字符串变量,赋初值为空值 String comdata = ""; //numdata是分拆之后的数字数组 int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0; void setup() { //定义

C# 日期和时间的字符串表示形式转换为其等效的DateTime(stringToDateTime)

一. 标准的日期和时间字符串转换 将日期和时间的字符串表示形式转换为其等效的DateTime对象是开发中很常见的类型转换,我们最常使用的方式是: // 如果s为null,抛出ArgumentNullException异常 // 如果s 不包含的有效字符串表示形式的日期和时间,抛出FormatException DateTime DateTime.Parse(string s); bool DateTime.TryParse(string s, out DateTime result); Date

字符串常量强制转换为字符指针

一.实验代码 #include <stdio.h> void print(char s[]); int main() { print((char *)"abcdef"); return 0; } void print(char s[]) { printf("%s\n",s); } 二.实验结果 输出:abcdef 三.调试现象 三.结论 字符串常量强制转换为字符指针,是将字符串常量的地址作为这个指针值.至于这个常量的位置还不太确定.

C# 不用系统自带的方法将字符串类型123456转换为值类型

C# 不用系统自带的方法将字符串类型123456转换为值类型 static void Main(string[] args) { string numString = "123045"; long num = GetNum(numString); Console.WriteLine(num); } private static long[] ten = new long[] { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000 };

php&amp;获取当前字符串的编码格式

如果不清楚字符串的编码格式的话,就可以像这样检查:? $out_string = mb_detect_encoding($string, array("ASCII", "UTF-8", "GB2312", "GBK", "BIG5")); echo $out_string; ?这样就能知道它是什么编码的了.后续操作还可以为其转码:? if ($out_string == "UTF-8")

Qt读取ANSI格式文件——利用QTextCodec将其他编码格式转换为Unicode格式

Qt使用Unicode来表示字符串.但是通常需要访问一些非Unicode格式的字符串,例如打开一个GBK编码的中文文本文件,甚至一些非Unicode编码的日文,俄文等. Qt提供了QTextCodec类用于不同编码格式之间的转换.关于Qt字符串格式转换以及QTextCodec的使用方式,网上有很多资料.其中大多数看起来很复杂,甚至根本无法完成转换工作,或者是基于较低的Qt版本编写.因此,有必要对使用QTextCodec完成字符串格式转换进行简要说明,本文中代码基于Qt5.1编写. 其实,在Qt帮

python字符串的编码格式

参考网站: http://www.cnblogs.com/siqi/archive/2012/11/10/2763598.html 环境: win7 x64 python v2.7.10 结论: 1 当在py文件开头设置# -*- coding: utf-8 -*-时,"汗" 表示utf-8编码的字符串,u“汗”表示ucs-2格式的字符串 2 字符串的成员函数decode,encode是相对于ucs-2来说的,即如果一个字符串的当前的编码格式是ucs-2是代表没有编码状态,其他的代表编

如何将一个格林威治字符串时间格式化转换为本地时间

python 时间函数学习了一大堆,那到底怎么将一个格林威治的时间字符串转换为本地时间呢? 这里将以一个格林威治时间字符串转换为北京时间为例进行说明. 格林威治时间字符串:2015-08-31T11:20:48 首先将这个字符串转换为表示时间的tuple格式: >>> t=time.strptime('2015-08-31T11:20:48','%Y-%m-%dT%H:%M:%S') >>> t time.struct_time(tm_year=2015, tm_mon

Arduino学习笔记A6(补充) - 在串口读取多个字符串,并且转换为数字数组

功能如题目. 在串口收到逗号分割的6串数字比如 100,200,45,4,87,99 然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值 代码注释很详细了,就不再说明了. ARDUINO 代码复制打印 //定义一个comdata字符串变量,赋初值为空值 String comdata = ""; //numdata是分拆之后的数字数组 int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0;