今天给各位分享javaencoding包的知识,其中也会对java encoding进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、UnicodeEncoding对象需要哪个jar包2、java中urlEncoding归属于哪个类,怎么使用的3、encoding=utf-8需要下载吗
UnicodeEncoding对象需要哪个jar包
maven打包的时候默认是不加入依赖的jar包的,所以想打出一个独立的可运行jar包的话直接mvn clean install package是不行的。需要略改动下pom文件,加入如下plugin
build
sourceDirectorysrc/main/java/sourceDirectory
plugins
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-compiler-plugin/artifactId
configuration
defaultLibBundleDirlib/defaultLibBundleDir
source1.5/source
target1.5/target
encodingUTF-8/encoding
/configuration
/plugin
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-jar-plugin/artifactId
configuration
archive
manifest
addClasspathtrue/addClasspath
classpathPrefix/classpathPrefix
mainClasscom.xx.xx.xx/mainClass
/manifest
/archive
/configuration
/plugin
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-dependency-plugin/artifactId
executions
execution
idcopy/id
phaseinstall/phase
goals
goalcopy-dependencies/goal
/goals
configuration
outputDirectory
${project.build.directory}
/outputDirectory
/configuration
/execution
/executions
/plugin
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-resources-plugin/artifactId
version2.2/version
configuration
encodingUTF-8/encoding
/configuration
/plugin
/plugins
/build
maven打包的时候有些jar包是不在mavencenter的。需要在pom中引入相关的本地jar包,那么相关的depency应该像如下更改
dependency
groupIdorg.wltea.ik-analyzer/groupId
artifactIdik-analyzer/artifactId
version3.2.8/version
scopesystem/scope
systemPath${project.basedir}/lib/ik-analyzer-3.2.8.jar/systemPath
/dependency
对于war包系统来说,有时候需要把jar包打到相关的war包中,可以使用plugin,默认将lib下的所有jar文件打包到WEB-INF/lib下。当然也是可以打包其他的文件的,诸如xml,properties等的。相关的plugin如下:
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-war-plugin/artifactId
version2.3/version
configuration
warName${project.artifactId}/warName
webResources
resource
directorylib//directory
targetPathWEB-INF/lib/targetPath
includes
include**/*.jar/include
/includes
/resource
/webResources
/configuration
/plugin
java中urlEncoding归属于哪个类,怎么使用的
您好,我来为您解答:
import java.net.URLEncoder; 归属java.net包下的
首先这个是: java.net.URLEncoder
主要功能是讲一些特殊字符以及中文进行转移,防止出现乱码,特别是在与服务端交互数据的时候,如果没有转义可能会导致乱码,然后服务端接收的就都是一些 ? ? ?号了.
具体用法如下:
String urll=”\t” + URLEncoder.encode(“需要转义的内容”, “UTF-8”);
如果我的回答没能帮助您,请继续追问。
encoding=utf-8需要下载吗
根据多次在ie6、ie7上测试发现用Encoding.Default的基本可以解决95%的乱码输出的问题,虽然网上有帖子说“谨慎使用Encoding.Default”,原帖见备注一。
但是另外的5%的乱码需要Encoding.GetEncoding(“utf-8”)才能解决,至于Encoding.GetEncoding(“GB2312”)没测试,因为尚未发现Encoding.GetEncoding(“utf-8”)和Encoding.Default都无法解决的境况。UTF-8和GB2312的区别在备注二中。
这样的话,治本的方法就是上传或下载导出文件时,分析上传文件字节流需要知道它的编码,不过C#目前还没有现成的函数能够获取,具体的方法可以参见备注三。
但是治本的方法也有缺点,1.对服务器的处理需求增大 2.修要修改的工作量增加。我这有个治标的办法,就是让user选择编码。虽然我极力不想这么做,但是没办法,学费还是要交的,下一版的时候注意。
备注四中有Encoding.Default的讲解。
备注一:from
谨慎使用Encoding.Default
2009-03-30 15:36
在处理文本时,经常需要处理Encoding的概念。存在这个问题的原因在于,在.NET程序内文本只是string和char对象,而保存到硬盘时,或者准备用socket把它发送出去时,都得先转换成byte[]或者字节流。而转换的算法,就是Encoding。
老外的程序里面,都喜欢用Encoding.ASCII,这是因为他们主要只使用western字符;于是我们经常要在他们的代码把Encoding.ASCII替换成Encoding.Default才能使用。
所谓Encoding.Default,是指当前系统设置的“默认字符集编码方式”。你可以通过控制面板里面的区域选项设置它(这是在我的机器上的设定):
查看图片
注意红色方框内的部分,“为你的非Unicode程序选择一个语言来匹配其本地语言版本”。这里选择了Chinese (PRC),则Encoding.Default等效于Encoding.GetEncoding(“gb2312”)。gb2312在代码页936,所以所有以双字节编码(ANSI编码)字符的程序在这个系统上会使用936代码页,使用Unicode的不受影响。
你可以看到 Encoding.Default的值是和系统设定相关的。这样,有些时候会出问题:一台机器用socket发送一段文本到另一台机器,两边都设定编码方式为Encoding.Default,但两台机器的区域选项的这个设置是不一样的,却没有被注意;如果发送的是非western字符,则接受方必然会得到乱码。这种问题往往会令人很困惑。
所以在面对中文且为ANSI编码的情况下,最好不要用Encoding.Default,而用 Encoding.GetEncoding(“gb2312”),或者更直接的Encoding.GetEncoding(936);而如果有可能的话,最好全部使用unicode,比如utf-8,也就是Encoding.UTF8。有了unicode之后,其实我们不需要代码页的概念。
备注二:
C#文本文件编码问题,区别UTF-8和GB2312 收藏
最近用C#涉及到一些读取 txt文本文件的操作,但是一个编码问题就困惑了我好久。如果编码选的不对,会造成乱码。之前转载的一片文章提出了一种解决方法,就是用new StreamReader(file, Encoding.Default)。这种方法解决了大部分问题,但是测试中发现对于有的UTF-8文件依然会造成乱码(中文windows环境)。
于是上网搜索解决方案。大多数是说UTF-8有特殊的前导码EF BB BF,只要认出这个就能判定是UTF-8编码了。但是我测试的一个文件发现前面并
没有这些前导码啊…于是继续搜索……
先转一篇直接知道怎么做的博文:
——————————————————————————–
一)需求
很多情况下我们需要知道字节流的编码,比如
1) 使用编辑器打开文本文件的时候,编辑器需要识别文本文件的各种编码
2) 上传文件后,分析上传文件字节流需要知道它的编码
二)探讨
不过C#目前还没有现成的函数能够获取,经过和同事的探讨,发现UTF8文件都有一个3字节的头,为“EF BB BF”(称为BOM–Byte Order Mark),判断这个头信息不就可以解决了吗?代码如下:
//判断上传的文件的编码是否是UTF8,buff为上传文件的字节流
enc = Encoding.UTF8;
testencbuff = enc.GetPreamble();
if(fileLengthtestencbuff.Length testencbuff[0] == buff[0] testencbuff[1]==buff[1] testencbuff[2]==buff[2])
{
// 是 UTF8编码
string buffString = enc.GetString(buff);
}
不过后来发现,不是所有的UTF8编码的文件都有BOM信息,那如何解决呢?
三)最终的方案
没有BOM信息只有通过逐个字节比较的方式才能解决。幸好已经有人解决这个问题了。推荐大家看:
这里判断所有的编码,基本上都是通过字节比较的方式。java代码很容易移植到.NET上,下面是UTF8判断部分的C#代码:
int utf8_probability(byte[] rawtext)
{
int score = 0;
int i, rawtextlen = 0;
int goodbytes = 0, asciibytes = 0;
// Maybe also use UTF8 Byte Order Mark: EF BB BF
// Check to see if characters fit into acceptable ranges
rawtextlen = rawtext.Length;
for (i = 0; i rawtextlen; i++)
{
if ((rawtext[i] (byte)0x7F) == rawtext[i])
{ // One byte
asciibytes++;
// Ignore ASCII, can throw off count
}
else
{
int m_rawInt0 = Convert.ToInt16(rawtext[i]);
int m_rawInt1 = Convert.ToInt16(rawtext[i+1]);
int m_rawInt2 = Convert.ToInt16(rawtext[i+2]);
if (256-64 = m_rawInt0 m_rawInt0 = 256-33 // Two bytes
i+1 rawtextlen
256-128 = m_rawInt1 m_rawInt1 = 256-65)
{
goodbytes += 2;
i++;
}
else if (256-32 = m_rawInt0 m_rawInt0 = 256-17 // Three bytes
i+2 rawtextlen
256-128 = m_rawInt1 m_rawInt1 = 256-65
256-128 = m_rawInt2 m_rawInt2 = 256-65)
{
goodbytes += 3;
i+=2;
}
}
}
if (asciibytes == rawtextlen) { return 0; }
score = (int)(100 * ((float)goodbytes/(float)(rawtextlen-asciibytes)));
// If not above 98, reduce to zero to prevent coincidental matches
// Allows for some (few) bad formed sequences
if (score 98)
{
return score;
}
else if (score 95 goodbytes 30)
{
return score;
}
else
{
return 0;
}
}
——————————————————————————–
OK.利用上面的代码,我来判断一下是UTF-8编码的概率:
view plaincopy to clipboardprint?
Encoding encode;
StreamReader srtest = new StreamReader(file.FullName,Encoding.Default);
int p = utf8_probability(Encoding.Default.GetBytes(srtest.ReadToEnd()));
if( p80 )
encode = Encoding.GetEncoding(65001);//utf8
else
encode = Encoding.Default;
srtest.Close();
Encoding encode;
StreamReader srtest = new StreamReader(file.FullName,Encoding.Default);
int p = utf8_probability(Encoding.Default.GetBytes(srtest.ReadToEnd()));
if( p80 )
encode = Encoding.GetEncoding(65001);//utf8
else
encode = Encoding.Default;
srtest.Close();
大功告成~哈哈~
感谢zdg的博文~
备注三:from
字节流编码获取原来这么复杂 收藏
一)需求
很多情况下我们需要知道字节流的编码,比如
1) 使用编辑器打开文本文件的时候,编辑器需要识别文本文件的各种编码
2) 上传文件后,分析上传文件字节流需要知道它的编码
二)探讨
不过C#目前还没有现成的函数能够获取,经过和同事的探讨,发现UTF8文件都有一个3字节的头,为“EF BB BF”(称为BOM–Byte Order Mark),判断这个头信息不就可以解决了吗?代码如下:
//判断上传的文件的编码是否是UTF8,buff为上传文件的字节流
enc = Encoding.UTF8;
testencbuff = enc.GetPreamble();
if(fileLengthtestencbuff.Length testencbuff[0] == buff[0] testencbuff[1]==buff[1] testencbuff[2]==buff[2])
{
// 是 UTF8编码
string buffString = enc.GetString(buff);
}
不过后来发现,不是所有的UTF8编码的文件都有BOM信息,那如何解决呢?
三)最终的方案
没有BOM信息只有通过逐个字节比较的方式才能解决。幸好已经有人解决这个问题了。推荐大家看:
这里判断所有的编码,基本上都是通过字节比较的方式。java代码很容易移植到.NET上,下面是UTF8判断部分的C#代码:
int utf8_probability(byte[] rawtext)
{
int score = 0;
int i, rawtextlen = 0;
int goodbytes = 0, asciibytes = 0;
// Maybe also use UTF8 Byte Order Mark: EF BB BF
// Check to see if characters fit into acceptable ranges
rawtextlen = rawtext.Length;
for (i = 0; i rawtextlen; i++)
{
if ((rawtext[i] (byte)0x7F) == rawtext[i])
{ // One byte
asciibytes++;
// Ignore ASCII, can throw off count
}
else
{
int m_rawInt0 = Convert.ToInt16(rawtext[i]);
int m_rawInt1 = Convert.ToInt16(rawtext[i+1]);
int m_rawInt2 = Convert.ToInt16(rawtext[i+2]);
if (256-64 = m_rawInt0 m_rawInt0 = 256-33 // Two bytes
i+1 rawtextlen
256-128 = m_rawInt1 m_rawInt1 = 256-65)
{
goodbytes += 2;
i++;
}
else if (256-32 = m_rawInt0 m_rawInt0 = 256-17 // Three bytes
i+2 rawtextlen
256-128 = m_rawInt1 m_rawInt1 = 256-65
256-128 = m_rawInt2 m_rawInt2 = 256-65)
{
goodbytes += 3;
i+=2;
}
}
}
if (asciibytes == rawtextlen) { return 0; }
score = (int)(100 * ((float)goodbytes/(float)(rawtextlen-asciibytes)));
// If not above 98, reduce to zero to prevent coincidental matches
// Allows for some (few) bad formed sequences
if (score 98)
{
return score;
}
else if (score 95 goodbytes 30)
{
return score;
}
else
{
return 0;
}
}
参考资料:
字符检测程序(上) 检测GB2312、BIG5…
Hello Unicode ——JAVA的中文处理学习笔记
备注四: from
今天解决了一个棘手的问题。
在Mono下面,StreamReader用Encoding.Default竟然无法正常读取GBK编码的文件。
随后展开了调查,用GBK编码的源代码中文Hello world程序竟然输出乱码!
用UTF-8编码的源代码文件编译的程序就是正确的。
难道真都是Mono对编码支持很混乱的原因吗?
不!很多.NET程序员把Encoding.Default理解错了。因为在Windows平台上Encoding.Default确实等于“GB18030”也就是GBK。
但是,随着环境的不同,Encoding.Default也会改变!比如在WinCE或者是一部分Linux,Unix上,默认的编码就是UTF-8,
这时候,Encoding.Default就相当于是Encoding.UTF8!
那要如何在默认是UTF-8的平台读取GBK编码的文件呢?很简单,用Encoding.GetEncoding(“GBK”)就可以了,GBK兼容GB2312。
以上是个人拙见,欢迎批评指正。
PS:
Oh,yeah yeah,我知道有些人会说,如果在Windows上就没有这样的烦心事,Mono的C# complier应该自动处理源文件编码的问题(针对
于关于非默认编码的源文件的问题)。很不幸的告诉你,.NET Framework自带的C#编译器同样不能正确处理非默认编码的源文件,比如
用Western什么什么的编码的源文件,特殊字符甚至会导致编译失败。但是为什么在Windows下,UTF-8编码的源文件就可以正确处理呢(
在UTF-8不是操作系统默认的编码的情况下)?说实话,that’s a little tricky,因为绝大多数的UTF-8的编码都是带有BOM的,很多人应
该还对VS2003中ASP.NET使用UTF-8编码的源文件造成浏览时候变成乱码记忆犹新吧,那就是因为VS2003默认的UTF-8编码是没有BOM的!
导致C#编译起编译ASP.NET页面的时候错误的使用了默认的GBK的编码,导致了最终页面的乱码现象。好在现在VS2005默认的UTF-8都也已
经是UTF-8 with signature了。哦,BOM的全称是Byte Ordered Mask,目的是为了区别Unicode big或者small endian的,后来被一些Geek
用来区别是不是UTF-8了,当然,这样做有利也有弊,总的来说,不够elegant。
点击阅读全文
打开CSDN,阅读体验更佳
关于Encoding.GetEncoding(“utf-8”)和Encoding.GetEncoding(“GB2312…
根据多次在ie6、ie7上测试发现用Encoding.Default的基本可以解决95%的乱码输出的问题,虽然网上有帖子说“谨慎使用Encoding.Default”,原帖见备注一。 但是另外的5%的乱码需要Encoding.GetEncoding(“utf-8”)才能解决,至于Encoding.GetEncoding(…
UTF-8, Unicode, GB2312三种编码方式解析, 深入研究汉字编码_yang_B62…
var gb = System.Text.Encoding.GetEncoding(“GB2312”); return gb.GetString(new[] {(byte) (0xb0 + (rNum/94)), (byte) (0xa1 + (rNum%94))}); } /// /// UTF8 汉字字节流转成 Unicode 汉字字节流 /// ///…
codepage与charset对照表
代码页(CodePage) 名称(CharSet) 显示名称(中文) 显示名称(英文) Info.CodePage Info.Name(CharSet) Info.DisplayName(cn) Info.DisplayName(en) 37 IBM037 IBM EBCDIC(美国 – 加拿大) IBM EBCDIC (US-Canada) 437 IBM437…
继续访问
Java InputStreamReader getEncoding()方法及示例
InputStreamReader类的getEncoding()方法 (InputStreamReader Class getEncoding() method) getEncoding() method is available in java.io package. getEncoding()方法在java.io包中可用。 getEncoding() method is used to ge…
继续访问
WebClient 字符串编码方式 Encoding.UTF8_bigsea76的博客_webc…
似乎应该写WebClient wc = new WebClient();wc.Encoding = Encoding.UTF8;以前使用wc.Encoding = Encoding.GetEncoding(“utf-8”);似乎不对。
使用utf-8出现?乱码_hao123369963的博客_utf-8乱码
byte[] space = new byte[]{0xc2,0xa0}; string UTFSpace = Encoding.GetEncoding(“UTF-8″).GetString(space); HtmlStr = HtmlStr.Replace(UTFSpace,” “); java版: byte bytes[] = {(byte) 0xC2,(byte) 0xA0}; …
关于Encoding.GetEncoding(“GB2312”)
我佛了 这玩意儿,编辑器可以用,打包就没反应了 从C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity找到这两个文件 放到工程Assets下
继续访问
C#学习笔记(9)-对于 “byte[] buffer = Encoding.GetEncoding(“GBK”).GetBytes(str);”这行代码的理解
源代码 下面是一个实现将一个字符串转换为字节数组的代码: string str = “你好,笑乾”; byte[] buffer =Encoding.GetEncoding(“GBK”).GetBytes(str); …… 为什么可以连续调用方法呢? GetEncoding(‘GBK’)的元数据为: public static Encoding GetEncoding(string …
继续访问
jquery encoding为utf-8_Unity中编码Encoding脱坑指南_weixin_3955952…
publicstaticstringReadAllText(stringpath, Encoding encoding); 如果不传入这个参数,会使用默认的编码方式: Debug.Log(System.Text.Encoding.Default);// 你会看到这个输出是UTF8 那如果我们的文本文件是GB2312的编码方式,读出来的文件会…
utf-8和gb2312乱码问题,延伸至中文编码乱码问题的解决(留坑以后有时…
stringstr2 = Encoding.Default.GetString(Encoding.Convert(Encoding.GetEncoding(“utf-8”), Encoding.GetEncoding(“gb2312”), Encoding.Default.GetBytes(str))); 2、编码转换中部分汉字丢失,变为“?”问题及解决 …
C#GBK编码转ANSI编码
static string gbk_ansi(string str) { Encoding gbk = Encoding.GetEncoding(936); Encoding ansi = Encoding.GetEncoding(“ANSI”); byte[] buf = gbk.GetB…
继续访问
.NET Core默认不支持GB2312,使用Encoding.GetEncoding(“GB2312”)的时候会抛出异常。
.NET Core默认不支持GB2312,使用Encoding.GetEncoding(“GB2312”)的时候会抛出异常。 解决方案是手动安装System.Text.Encoding.CodePages包(Install-Package System.Text.Encoding.CodePages), 然后在Starup.cs的Configure方法中加入Encoding.Regist…
继续访问
C# 里,utf8 和 GBK,GB2312 字符集 互相转换,代码和注意点_rolling_kit…
usingSystem.Text;…publicstaticstringUTF8ToGBK(stringtext){Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);try{Encodingutf8=Encoding.UTF8;Encodinggbk=Encoding.GetEncoding(“gbk”);//Encoding.Default ,936byte[]temp=…
以当前默认file encoding读取文件然后以utf-8写入新文件_russle的博客…
在简体中文Windows上, 默认启动的Java程序如果没有加上设置file encoding,那么默认生成的文件(写文件时没有指定编码的那种)是GBK编码的,这样的文件传输到其它非GBK编码的机器上会无法正常显示。 需要将其转换为utf-8格式的,这样就能在所…
ANSI、GBK、Unicode编码简介
ANSI编码表: DOS与ANSI分布图: 各种编码依次产生简介: ANSII码:英文码+英文常用图形,一个字符占用一个字节。 GB2312(1980年,中国大陆,最早国标码):即中文ANSII码,中文码占用了0x80~0xFF,收录汉字6763个,汉字图形682个。ASII有94个区,每个区94位,每个区位放一个字符。一个字节只能表示256个字符,不够用,因此要用两个字节,最…
继续访问
Linux下面提示Encoding 936 data could not be found.
最近在使用CentOS 7 进行Mono测试的时候,发现好多异常情况,其中程序里面有用到GBK编码,然后运行的时候就报错了,错误码具体如下:WARNING: The runtime version supported by this application is unavailable. Using default runtime: v4.0.30319Unhandled Exception: Sy
继续访问
C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换
C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Te…
继续访问
C# Encoding.GetEncoding 编码列表
C# Encoding.GetEncoding 编码列表,包含常用的各种编码的名称和代码,分享给大家,做为开发工具资料用
Encoding code = Encoding.GetEncoding(编码类型);
对所要处理的页面设置编码类型语句:Encoding code = Encoding.GetEncoding(编码类型);常用的有:Encoding code = Encoding.GetEncoding(“GB2312”);Encoding code = Encoding.GetEncoding(“UTF-8 “);
继续访问
encoding.getencoding utf-8
javascript
关于javaencoding包和java encoding的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。