标签: encoding

Windows cmd编码更改导致Python崩溃

首先,我将Windows CMD编码更改为utf-8并运行Python解释器:

chcp 65001
python
Run Code Online (Sandbox Code Playgroud)

然后我尝试在其中打印一个unicode sting,当我这样做时,Python以一种特殊的方式崩溃(我只是在同一个窗口中得到一个cmd提示符).

>>> import sys
>>> print u'ëèæîð'.encode(sys.stdin.encoding)
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会发生以及如何使它工作?

UPD:sys.stdin.encoding退货'cp65001'

UPD2:我刚才发现这个问题可能与utf-8使用多字节字符集这一事实有关(kcwu就此提出了一个很好的观点).我尝试使用'windows-1250'运行整个示例并得到'ëea?'.Windows-1250使用单字符集,因此它适用于它理解的字符.但是我仍然不知道如何让'utf-8'在这里工作.

UPD3:哦,我发现它是一个已知的Python bug.我想会发生的事情是Python将cmd编码复制为'cp65001到sys.stdin.encoding并尝试将其应用于所有输入.由于它无法理解'cp65001',因此它会在包含非ascii字符的任何输入上崩溃.

python windows unicode encoding cmd

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

Ruby将CSV文件读取为UTF-8和/或将ASCII-8Bit编码转换为UTF-8

我正在使用ruby 1.9.2

我正在尝试解析包含一些法语单词的CSV文件(例如spécifié)并将内容放在MySQL数据库中.

当我从CSV文件中读取行时,

file_contents = CSV.read("csvfile.csv", col_sep: "$")
Run Code Online (Sandbox Code Playgroud)

这些元素以ASCII-8BIT编码的字符串形式返回(spécifié变为sp\xE9cifi\xE9),然后像"spécifié"这样的字符串未正确保存到我的MySQL数据库中.

Yehuda Katz说ASCII-8BIT实际上是"二进制"数据,这意味着CSV不知道如何读取适当的编码.

所以,如果我尝试使CSV强制编码如下:

file_contents = CSV.read("csvfile.csv", col_sep: "$", encoding: "UTF-8")

我收到以下错误

ArgumentError: invalid byte sequence in UTF-8: 
Run Code Online (Sandbox Code Playgroud)

如果我回到我原来的ASCII-8BIT编码字符串并检查我的CSV读取为ASCII-8BIT的字符串,它看起来像"非sp\xE9cifi\xE9"而不是"非spécifié".

这样做我无法将"Non sp\xE9cifi\xE9"转换为"非spécifié" "Non sp\xE9cifi\xE9".encode("UTF-8")

因为我收到这个错误:

Encoding::UndefinedConversionError: "\xE9" from ASCII-8BIT to UTF-8,

Katz指出会发生这种情况,因为ASCII-8BIT实际上并不是一个正确的字符串"编码".

问题:

  1. 我可以使用CSV以适当的编码读取我的文件吗?如果是这样,怎么样?
  2. 如何将ASCII-8BIT字符串转换为UTF-8以便在MySQL中正确存储?

ruby csv string encoding utf-8

55
推荐指数
2
解决办法
5万
查看次数

Mysql2 ::错误:字符串值不正确

我有一个在生产模式下运行的rails应用程序,但是当用户试图保存记录时,突然出现了这个错误.

Mysql2::Error: Incorrect string value
Run Code Online (Sandbox Code Playgroud)

更多细节(来自生产日志):

Parameters: {"utf8"=>"â<9c><93>" ... 

Mysql2::Error: Incorrect string value: '\xC5\x99\xC3\xA1k 

Mysql2::Error: Incorrect string value: '\xC5\x99\xC3\xA1k 
Run Code Online (Sandbox Code Playgroud)

现在我看到了一些需要删除数据库并重新创建数据库的解决方案,但我不能这样做.

现在mysql显示了这个:

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.04 sec) …
Run Code Online (Sandbox Code Playgroud)

ruby mysql encoding ruby-on-rails

55
推荐指数
3
解决办法
4万
查看次数

如何在Python中将文件转换为utf-8?

我需要在Python中将一堆文件转换为utf-8,而我在"转换文件"部分时遇到了麻烦.

我想做相当于:

iconv -t utf-8 $file > converted/$file # this is shell code
Run Code Online (Sandbox Code Playgroud)

谢谢!

python encoding file utf-8

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

如果页面已经是UTF-8,那么将accept-charset ="UTF-8"添加到HTML表单有什么好处吗?

对于已经指定的页面(通过HTTP标头或元标记),要使用带有UTF-8字符集的Content-Type ...是否有添加accept-charset="UTF-8"到HTML表单的好处?

(我理解的accept-charset属性在IE打破了ISO-8859-1,但我还没有听说过有IE和UTF-8的问题.我只是问,如果有一个好处与UTF-8将它添加到有助于防止输入无效的字节序列.)

html forms encoding utf-8 character-encoding

54
推荐指数
1
解决办法
3万
查看次数

我为什么要使用人类可读的文件格式?

为什么我应该使用人类可读的文件格式而不是二进制格式?有不是这种情况的情况吗?

编辑:我在最初发布问题时确实有这个作为解释,但现在不太相关:

在回答这个问题时,我想让提问者参考一个标准的答案,解答为什么使用人类可读的文件格式是一个好主意.然后我搜索了一个,找不到一个.所以这就是问题所在

binary formatting encoding abstraction file

53
推荐指数
6
解决办法
8047
查看次数

如何在csharp项目中更改源文件编码(visual studio/msbuild机器)?

有没有办法迫使VS总是使用Unicode,而不是奇怪的ISO-something?

我正在使用Vista上的Visual Studio 2008(波兰语语言环境)开发winapp csproject.当我在Win Server 2003(英语语言环境)上构建项目时出现问题 - 然后波兰语变音就消失了.

我调查过这个问题是由不正确的源文件编码引起的.看起来源文件没有使用UTF-8编码.

encoding localization utf-8 visual-studio

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

批处理文件编码

我想处理包含奇怪字符的文件名,比如法语é.

shell中的一切都运行良好:

C:\somedir\>ren -hélice hélice
Run Code Online (Sandbox Code Playgroud)

我知道如果我把这行放在.bat文件中,我得到以下结果:

C:\somedir\>ren -hÚlice hÚlice
Run Code Online (Sandbox Code Playgroud)

看?é已被Ú取代.

命令输出也是如此.如果我dir在shell中有一些目录,输出就可以了.如果我将此输出重定向到文件,则会转换某些字符.

那么我怎么能告诉cmd.exe如何解释我的批处理文件中出现的é,实际上是é而不是Ú或逗号?

因此,执行.bat文件时无法提供有关其编写代码页的提示?

windows encoding cmd batch-file

53
推荐指数
1
解决办法
8万
查看次数

如何使用UTF-8以外的代码页在C#中写出文本文件?

我想写出一个文本文件.

而不是默认的UTF-8,我想把它编码为ISO-8859-1编码,这是代码页28591.我不知道如何做到这一点......

我用以下非常简单的代码写出我的文件:

using (StreamWriter sw = File.CreateText(myfilename))
{
    sw.WriteLine("my text...");
    sw.Close();
}
Run Code Online (Sandbox Code Playgroud)

c# encoding utf-8 iso-8859-1

52
推荐指数
2
解决办法
13万
查看次数

使用CURL和编码的URL删除

我正在尝试使用CURL这样的请求:

curl -X DELETE "https://myhost/context/path/users/OXYugGKg207g5uN/07V" 
Run Code Online (Sandbox Code Playgroud)

哪里OXYugGKg207g5uN/07V是哈希,所以我想我需要在执行此请求之前进行编码.

我试过了 curl -X DELETE --data-urlenconded "https://myhost/context/path/users/OXYugGKg207g5uN/07V"

一些想法?

url encoding curl request http-delete

52
推荐指数
2
解决办法
7万
查看次数