我扫描了Rust文档,以便在字符编码之间进行转换,但没有找到任何内容.我错过了什么?
是否由Rust语言及其标准库支持(直接或间接),甚至计划在不久的将来?
由于其中一个答案表明有一个简单的解决方案,因为u8可以转换为(Unicode)chars.Unicode是ISO-8859-1中代码点的超集,即1:1映射,它编码为UTF-8中的多个字节,这是StringRust 中s 的内部编码.
fn main() {
println!("{}", 196u8 as char);
println!("{}", (196u8 as char) as u8);
println!("{}", 'Ä' as u8);
println!("{:?}", 'Ä'.to_string().as_bytes());
println!("{:?}", "Ä".as_bytes());
println!("{}",'Ä' == 196u8 as char);
}
Run Code Online (Sandbox Code Playgroud)
得到:
Ä
196
196
[195, 132]
[195, 132]
true
Run Code Online (Sandbox Code Playgroud)
哪个我甚至没有考虑过工作!
我有一个关于MS Access的数据库,我通过调用PDO和odbc驱动程序与PHP一起使用.我的数据库中有法语,丹麦语和波兰语.对于法国人和丹麦人来说没有问题,但没有办法获得波兰人的角色,我只能得到"?" 代替.
这是代码:
try{
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$dbName; Uid=Admin;Pwd=;");
}
catch(PDOException $e){
echo $e->getMessage();
}
$answer = $db -> query("SELECT * FROM dict_main WHERE ID < 20");
while($data = $answer-> fetch() ){
echo iconv("iso-8859-1","utf-8",htmlspecialchars($data['DK'])) . ' ';
echo iconv("iso-8859-2","utf-8",htmlspecialchars($data['PL'])) . ' ';
echo iconv("iso-8859-1","utf-8",htmlspecialchars($data['FR'])) . ' ';
}
Run Code Online (Sandbox Code Playgroud)
如果有人有想法,请告诉我,因为我用完了,似乎什么都没有用,或者我是否应该提供更多关于我没有想到的问题的信息.
关于在两个应用程序服务器(Websphere 8.0.0.3)中部署的应用程序,我有以下问题。
这些服务具有相同的配置文件(肯定的是,我导出了一个配置文件并将其导入到第三台应用程序服务器中),并且在读取和显示以iso8859-7编码的文件时遇到了问题。一台应用程序服务器正确显示它们,另一台显示文件中非ASCII字符的引号。另一个应用程序服务器在正确显示它们时没有问题。由于我怀疑问题并非出自Websphere,而是OS问题(在所有情况下均为Unix SLES),因此我从一个服务器导出了配置文件,并将其安装在第三个服务器上,并且似乎都可以正常工作精细。
为了解决这个问题,我已经部署了一个简单的servlet,以显示jvm的默认字符集。在有问题的显示器上显示US-ASCII,在有问题的显示器上显示UTF-8。以运行应用程序服务器的用户身份在unix终端中运行语言环境,在两台计算机上的en_US.UTF8上都设置了lang。
我要添加的最后一件事是,该应用程序还使用带有log4j绑定的slf4j写入日志文件。在有问题的服务器上,日志文件是ASCII,在好的服务器上是UTF-8。很显然,在日志中记录iso8859-7字符时,显示问号(?)而不是实际字符。
我的问题是我应该继续在Websphere中寻找配置错误问题还是这是操作系统设置问题
先感谢您
Vasileios Mylnakis
有很多关于 'latin-1' codec 的帖子,但是这些答案并不能解决我的问题,也许是我的问题,我只是学习 Python 的菜鸟,有点。当我cwd(dirname)以前改变FTP站点的目录时,发生了unicodeerror。请注意,dirname包含中文字符,显然,这些字符会导致此错误。我按照之前帖子里的建议做了一些编码和解码,但没有奏效。有人能给我一些建议如何修复这个错误并使其cwd工作吗?
一些代码:
file = 'myhongze.jpg'
dirname = './??????/zgcao/test-python/'
site = '***.***.***.***'
user = ('zhigang',getpass('Input Pwd:'))
ftp = FTP(site)
ftp.login(*user)
ftp.cwd(dirname)# throw exception
Run Code Online (Sandbox Code Playgroud)
一些测试:
file = 'myhongze.jpg'
dirname = './??????/zgcao/test-python/'
site = '***.***.***.***'
user = ('zhigang',getpass('Input Pwd:'))
ftp = FTP(site)
ftp.login(*user)
ftp.cwd(dirname)# throw exception
Run Code Online (Sandbox Code Playgroud)
输出:
u'./??????/zgcao/test-python/'.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)
b'./\xe9\xa1\xb9\xe7\x9b\xae\xe6\x88\x90\xe5\x91\x98\xe8\xb5\x84\xe6\x96\x99/zgcao/test-python/'
Run Code Online (Sandbox Code Playgroud)
输出:
u'./??????/zgcao/test-python/'.encode('utf-8').decode('cp1252')
Run Code Online (Sandbox Code Playgroud)
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 10: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
输出:
u'./??????/zgcao/test-python/'.encode('utf-8').decode('latin-1')
Run Code Online (Sandbox Code Playgroud)
值得注意的是,??????被表现为ÏîÄ¿×é³ÉԱ˽È˿ռä当我用 …
我知道这听起来很糟糕,但这是必要的。
\n\n我在一个使用 utf-8 字符集的网站上有一个 HTML 表单,该表单被发送到使用 iso-8859-1 字符集的服务器。问题是服务器无法正确理解我们在西班牙使用的字符,例如\xc3\xa0, \xc3\xa1, \xc3\xa8, \xc3\xa9, \xc3\xac, \xc3\xad, \xc3\xb2, \xc3\xb3, \xc3\xb9, \xc3\xba, \xc3\xb1, \xc3\xa7等等。因此,如果我搜索类似的内容,art\xc3\xadculo它会找不到任何答案art\xc3\x83\xc2\xadculo。
我使用 ajaxform ( http://malsup.com/jquery/form/ )发送表单,代码如下:
\n\n$(".form-wrap, #pagina").on("submit", "form", function(event){\n event.preventDefault();\n $(this).ajaxSubmit({\n\n success: function(data){\n $("#temp").html(data);\n //Handle data in #temp div\n $("#temp").html(\'\');\n }\n });\n return false;\n});\nRun Code Online (Sandbox Code Playgroud)\n\n我的问题是:我无法访问搜索服务器,并且无法将整个网站更改为 iso-8859-1 编码,因为这会破坏其他内容。
\n\n我已经尝试过这些脚本但没有成功:
\n\n我可能做的一切都是错的吗?
\n\n编辑:该escape函数对我来说没有用,因为它将这些空格字符转换为%对服务器无用的前缀代码,然后它搜索art%EDculo.
使用encodeURIComponent …
我们所有基于文本的文件均采用 UTF-8 或 latin-1 (Windows) 编码。我们使用的唯一“特殊字符”是德语变音符号 \xc3\xa4、\xc3\xb6、\xc3\xbc 和 \xc3\x9f。
\n\n由于不同的原因(包括历史原因,也包括“属性文件不能是UTF-8”的老问题),我们无法完全统一我们的编码。
\n\n当人们用 Java 读取文本文件并使用错误的编码时,这显然会导致错误。
\n\n如果您知道唯一可能的特殊字符是上面指出的字符,是否有一种简单、可靠的方法来检测文件是 UTF-8 还是 latin-1。
\n\n或者我是否需要将文件读取为字节数组并搜索特殊字节?
\n有谁知道Python 库可以让您以智能方式将UTF-8 字符串转换为ISO-8859-1 编码?
\n\n所谓聪明,我的意思是用“-”左右替换“\xe2\x80\x93”等字符。对于许多确实无法想到等效字符的字符,请替换为“?” (就像encode(\'iso-8859-1\', errors=\'replace\')那样)。
本周末我将使用fast-export将一个大型 Mercurial 项目转换为 Git 。我已经测试了几次,结果很好。
我们还想将我们的源代码编码(大量带有变音符号的德语注释/字符串文字)从 ISO-8859-1 转换为 UTF-8(repo 中的所有其他非 Java 文件应保持原样),并且Git 迁移让我们有机会现在就这样做,因为无论如何每个人都需要再次克隆。但是,我没有找到一个好的方法。
git filter-tree --tree-filter ...方法SO。然而,虽然这看起来很理想,但由于存储库的大小(大约 200000 次提交,18000 个代码文件),它需要的时间比我周末的时间长得多。我试过直接从具有 72 个内核的 linux VM 上的 64GB tmpfs 卷运行它(在一个高度优化的版本中,文件列表被分块,子列表被并行转换(使用GNU 并行),但它仍然会需要几天...--allas <rev-list>),而是所有提交都可以从当前活动分支到达,并且无法通过某些过去的提交到达,这(希望)是所有当前分支的前身分支(branch-a branch-b branch-c --not old-tag-before-branch-a-b-c-forked-off作为<rev-list>)。它仍在运行,但我担心我不能真正相信结果,因为这似乎是一个非常糟糕的主意。所以现在,我觉得最好的解决方案可能是坚持 ISO-8859-1。
有没有人有想法?有人提到,也许reposurgeon基本上可以使用它的transcode操作来做方法 1 ,git filter-tree --tree-filter ...但我不知道它是如何工作的。
我正在开展一个迁移项目,将 Web 服务器层从 python 2.7.8 升级到 python 3.6.3,并且在某些特殊情况下遇到了障碍。\n当从客户端收到请求时,有效负载将使用本地传输pyzmq 现在在bytespython3 中交互,而不是str(像在 python2 中一样)。
现在,我收到的有效负载使用iso-8859-1 (latin-1)方案进行编码,我可以轻松地将其转换为字符串作为payload.decode('latin-1')并将其传递给下一个服务(svc- save-entity)需要字符串参数。
\n但是,后续服务“ svc-save-entity ”期望非 latin-1 字符(如果存在)以 ASCII 字符引用(例如éfor \xc3\xa9)而不是十六进制(例如\\xe9for \xc3\xa9)表示。
我正在努力寻找一种有效的方法来实现这种转换。任何Python专家都可以指导我吗?本质上我需要一个函数的定义decode_tostring():
payload = b'Banco Santander (M\\xe9xico)' #payload is in bytes\npayload_str = decode_tostring(payload) #function to convert into string\npayload_str == 'Banco Santander (México)' #payload_str is a string in ASCII Character Reference\nRun Code Online (Sandbox Code Playgroud)\n请的定义decode_tostring()。:) …
iso-8859-1 ×10
utf-8 ×5
encoding ×4
python ×3
ascii ×1
c# ×1
ftp ×1
ftplib ×1
git ×1
iso-8859-2 ×1
java ×1
javascript ×1
jquery ×1
ms-access ×1
php ×1
python-3.6 ×1
python-3.x ×1
reposurgeon ×1
rust ×1
sql ×1