标签: character-encoding

编码和字符集有什么区别?

我对文本编码和字符集感到困惑.出于很多原因,我必须在即将开展的工作中学习非Unicode,非UTF8的东西.

我在电子邮件标题中找到"charset"一词,如"ISO-2022-JP",但在文本编辑器中没有这样的编码.(我环顾了不同的文字编辑.)

文本编码和字符集之间有什么区别?如果您能向我展示一些用例示例,我将不胜感激.

encoding character-encoding

142
推荐指数
9
解决办法
4万
查看次数

如何从文件开头删除ï»?

我有一个CSS文件,当我使用gedit打开它时看起来很好,但是当它被PHP读取(将所有CSS文件合并为一个)时,这个CSS前面有以下字符:

PHP删除所有空格,因此代码中间的随机会弄乱整个事物.正如我所提到的,当我在gedit中打开文件时,我实际上看不到这些字符,因此我无法轻易删除它们.

我搜索了问题,文件编码显然有问题,这是有道理的,因为我已经通过ftp和rsync将文件转移到不同的Linux/Windows服务器,并使用一系列文本编辑器.我不太了解字符编码,所以请帮助.

如果有帮助,文件将以UTF-8格式保存,gedit将不允许我以ISO-8859-15格式保存(该文档包含一个或多个无法使用指定字符编码进行编码的字符).我尝试用Windows和Linux行结尾保存它,但都没有帮助.

php byte-order-mark utf-8 character-encoding mojibake

140
推荐指数
7
解决办法
19万
查看次数

如何在C#中将字符串转换为UTF-8?

我有一个字符串,我从第三方应用程序收到,我想在我的Windows Surface上使用C#以任何语言正确显示它.

由于编码不正确,我的字符串在西班牙语中看起来像这样:

Acción

而它应该是这样的:

行动组织

根据这个问题的答案: 如何知道C#中的字符串编码,我收到的编码应该是UTF-8,但它是在Encoding.Default(可能是ANSI?)上读取的.

我试图将这个字符串转换成真正的UTF-8,但其中一个问题是我只能看到Encoding类的一个子集(仅限UTF8和Unicode属性),可能是因为我只限于windows表面API.

我已经尝试了一些我在互联网上找到的片段,但到目前为止,东方语言(即韩语)都没有成功.一个例子如下:

var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);     
Run Code Online (Sandbox Code Playgroud)

我也尝试将字符串解压缩为字节数组,然后使用UTF8.GetString:

byte[] myByteArray = new byte[myString.Length];
for (int ix = 0; ix < myString.Length; ++ix)
{
    char ch = myString[ix];
    myByteArray[ix] = (byte) ch;
}

myString = Encoding.UTF8.GetString(myByteArray, 0, myString.Length);
Run Code Online (Sandbox Code Playgroud)

你们有其他想法我可以试试吗?

c# string encoding utf-8 character-encoding

138
推荐指数
6
解决办法
39万
查看次数

Java:如何确定流的正确charset编码

参考以下线程: Java App:无法正确读取iso-8859-1编码文件

以编程方式确定输入流/文件的正确字符集编码的最佳方法是什么?

我尝试过使用以下内容:

File in =  new File(args[0]);
InputStreamReader r = new InputStreamReader(new FileInputStream(in));
System.out.println(r.getEncoding());
Run Code Online (Sandbox Code Playgroud)

但是在我知道用ISO8859_1编码的文件中,上面的代码产生了ASCII,这是不正确的,并且不允许我正确地将文件的内容呈现回控制台.

java encoding file stream character-encoding

135
推荐指数
10
解决办法
29万
查看次数

我可以让git将UTF-16文件识别为文本吗?

我在git中跟踪虚拟PC虚拟机文件(*.vmc),在进行更改后,git将该文件识别为二进制文件并且不会为我进行区分.我发现该文件是用UTF-16编码的.

可以教git识别这个文件是文本并适当处理它吗?

我在Cygwin下使用git,core.autocrlf设置为false.如果需要,我可以在UNIX下使用mSysGit或git.

git unicode diff utf-16 character-encoding

135
推荐指数
6
解决办法
6万
查看次数

如何将Apache的默认编码更改为UTF-8?

我正在使用托管公司,如果文件index.html不存在,它将列出目录中的文件,它使用iso-8859-1作为默认编码.

如果服务器是Apache,有没有办法将UTF-8设置为默认值?

更新:另外我发现它实际上是使用HTML 3.2的DOCTYPE,然后根本就没有字符集...所以它没有设置任何编码.但有没有办法改变它使用UTF-8?

apache character-encoding apache-config

131
推荐指数
9
解决办法
34万
查看次数

谁在S​​pring MVC中设置响应内容类型(@ResponseBody)

我在我的Annotation驱动的Spring MVC Java Web应用程序中运行在jetty Web服务器上(目前在maven jetty插件中).

我试图用一个控制器方法做一些AJAX支持,只返回String帮助文本.资源采用UTF-8编码,字符串也是如此,但我的服务器响应是随附的

content-encoding: text/plain;charset=ISO-8859-1 
Run Code Online (Sandbox Code Playgroud)

即使我的浏览器发送

Accept-Charset  windows-1250,utf-8;q=0.7,*;q=0.7
Run Code Online (Sandbox Code Playgroud)

我正在以某种方式使用弹簧的默认配置

我发现了一个提示将这个bean添加到配置中,但我认为它只是没有使用,因为它说它不支持编码,而是使用默认编码.

<bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes" value="text/plain;charset=UTF-8" />
</bean>
Run Code Online (Sandbox Code Playgroud)

我的控制器代码是(请注意,此响应类型的更改对我不起作用):

@RequestMapping(value = "ajax/gethelp")
public @ResponseBody String handleGetHelp(Locale loc, String code, HttpServletResponse response) {
    log.debug("Getting help for code: " + code);
    response.setContentType("text/plain;charset=UTF-8");
    String help = messageSource.getMessage(code, null, loc);
    log.debug("Help is: " + help);
    return help;
}
Run Code Online (Sandbox Code Playgroud)

java web-applications spring-mvc character-encoding

122
推荐指数
7
解决办法
24万
查看次数

如何在MySQL中找到非ASCII字符?

我正在使用MySQL数据库,该数据库包含从Excel导入的一些数据.数据包含非ASCII字符(em破折号等)以及隐藏的回车符或换行符.有没有办法使用MySQL查找这些记录?

mysql character-encoding

116
推荐指数
5
解决办法
10万
查看次数

如何在Eclipse中支持UTF-8编码

如何在eclipse中添加UTF-8支持?我想添加例如俄语,但eclipse不会支持它.我该怎么办?请指导我.

eclipse encoding utf-8 character-encoding

115
推荐指数
6
解决办法
19万
查看次数

对Unicode字符进行URL编码的正确方法是什么?

我知道非标准的%uxxxx方案,但这似乎不是明智的选择,因为该方案已被W3C拒绝.

一些有趣的例子:

心中的人物.如果我在浏览器中输入:

http://www.google.com/search?q=?
Run Code Online (Sandbox Code Playgroud)

然后复制并粘贴它,我看到这个URL

http://www.google.com/search?q=%E2%99%A5
Run Code Online (Sandbox Code Playgroud)

这使得它看起来像Firefox(或Safari)正在这样做.

urllib.quote_plus(x.encode("latin-1"))
'%E2%99%A5'
Run Code Online (Sandbox Code Playgroud)

这是有道理的,除了不能用Latin-1编码的东西,比如三点字符.

Run Code Online (Sandbox Code Playgroud)

如果我输入URL

http://www.google.com/search?q=…
Run Code Online (Sandbox Code Playgroud)

进入我的浏览器然后复制粘贴,我明白了

http://www.google.com/search?q=%E2%80%A6
Run Code Online (Sandbox Code Playgroud)

背部.这似乎是做的结果

urllib.quote_plus(x.encode("utf-8"))
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为...不能用Latin-1编码.

但后来我不清楚浏览器是如何用UTF-8或Latin-1解码的.

因为这似乎含糊不清:

In [67]: u"…".encode('utf-8').decode('latin-1')
Out[67]: u'\xc3\xa2\xc2\x80\xc2\xa6'
Run Code Online (Sandbox Code Playgroud)

有效,所以我不知道浏览器是如何用UTF-8或Latin-1解码的.

使用我需要处理的特殊字符做什么是正确的?

unicode urlencode web-standards utf-8 character-encoding

106
推荐指数
4
解决办法
10万
查看次数