新足迹

 找回密码
 注册

精华好帖回顾

· 也谈戚风 (2007-8-19) 紫雪花 · 今天我们登陆澳洲两年整(27/06) (2007-6-27) yanyan911
· 【三刀厨侠争霸赛】买菜便宜的好处 (2008-9-29) big_beast · 聊聊Bentleigh的房价 (2007-2-26) villa
Advertisement
Advertisement
查看: 2088|回复: 22

文件 编码 ISO-8859-1,UTF8问题,高手进 [复制链接]

头像被屏蔽

禁止访问

发表于 2013-1-23 12:20 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
碰上点麻烦,高手请指教。

现在问题是,apostrophes 变成了 ’    (用sed做了些文档处理,悲剧)
应该是一UTF8编码的文件,被sed当成ISO-8859-1 保存了,悲剧。

http://ask-leo.com/why_do_i_get_ ... n_my_documents.html

放狗了半天,还是没找到恢复办法。

有人有经验怎么恢复这个文件不
Advertisement
Advertisement

发表于 2013-1-23 12:37 |显示全部楼层
此文章由 joerkky 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 joerkky 所有!转贴必须注明作者、出处和本声明,并保持内容完整
iconv?

评分

参与人数 1积分 +2 收起 理由
lingg + 2 感谢分享

查看全部评分

头像被屏蔽

禁止访问

发表于 2013-1-23 13:27 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
joerkky 发表于 2013-1-23 11:37
iconv?

不行。。比如 apostrophe 已经被 转成 ’   iconv 转不回去

发表于 2013-1-23 13:28 |显示全部楼层
此文章由 北风 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 北风 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原文件没有保存?
头像被屏蔽

禁止发言

发表于 2013-1-23 13:32 |显示全部楼层
此文章由 wowmygame 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wowmygame 所有!转贴必须注明作者、出处和本声明,并保持内容完整
把文件导入Google app. Google 会自动调到可以看的编码

评分

参与人数 1积分 +2 收起 理由
lingg + 2 感谢分享

查看全部评分

头像被屏蔽

禁止访问

发表于 2013-1-23 13:33 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
北风 发表于 2013-1-23 12:28
原文件没有保存?

有保存,悲剧的是数据库文件,当时没注意到这个问题,现在转错码的版本已经跑了几天了,
从原文件恢复是不行了
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2013-1-23 13:34 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
wowmygame 发表于 2013-1-23 12:32
把文件导入Google app. Google 会自动调到可以看的编码

请问哪一个 Google app?

发表于 2013-1-23 13:42 |显示全部楼层
此文章由 北风 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 北风 所有!转贴必须注明作者、出处和本声明,并保持内容完整
lingg 发表于 2013-1-23 12:33
有保存,悲剧的是数据库文件,当时没注意到这个问题,现在转错码的版本已经跑了几天了,
从原文件恢复是 ...

是数据库里面的data是吧?
是几个表还是整个数据库?
是什么数据库?mySQL?

如果是数据库你可以试试看这样
restore老的,干净的备份到别的database
比较这两个database
改好collation设置
如果你知道哪些表给被修改了,record by record, field by field去替换(从旧的干净的替换到新的改好collation但是data不干净的)
当然这些都不能在prod里做
If you let people believe that you are weak, sooner or later you’re going to have to kill them.

发表于 2013-1-23 13:45 |显示全部楼层
此文章由 wenwenmum 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wenwenmum 所有!转贴必须注明作者、出处和本声明,并保持内容完整
in notepad++  open the file, set encoding to ISO-8859-1 and then convert to utf-8

评分

参与人数 1积分 +2 收起 理由
lingg + 2 感谢分享

查看全部评分

头像被屏蔽

禁止访问

发表于 2013-1-23 13:50 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
北风 发表于 2013-1-23 12:42
是数据库里面的data是吧?
是几个表还是整个数据库?
是什么数据库?mySQL?

谢了,是一个整的MYSQL数据库,你说的这些已经做过了,
数据库的编码属性没有问题。

现在查出来的问题,就是我手贱用SED去处理了一些字符,SED保存的时候应该是用ISO-8859-1的标准来存UTF8标注的字符,导致了乱码:

比如左单引号 在UTF8下是: 0xE28099 ,被分开处理,成了 -》  0xE2 (â), 0x80 (€) and 0x99 (™).

即便现在将文件换成UTF8 也没有办法,看上面这个转换,不像是一个简单可逆的。

我估计要找人 专门写的代码,识别这些常见的可能产生错误字符,才能转换回去。

评分

参与人数 1积分 +3 收起 理由
kr2000 + 3 原来这玩意’是这样生出来的.

查看全部评分

发表于 2013-1-23 13:57 |显示全部楼层
此文章由 北风 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 北风 所有!转贴必须注明作者、出处和本声明,并保持内容完整
lingg 发表于 2013-1-23 12:50
谢了,是一个整的MYSQL数据库,你说的这些已经做过了,
数据库的编码属性没有问题。

恩,需要写个东西寻找和替换
If you let people believe that you are weak, sooner or later you’re going to have to kill them.
Advertisement
Advertisement

发表于 2013-1-23 13:57 |显示全部楼层
此文章由 北风 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 北风 所有!转贴必须注明作者、出处和本声明,并保持内容完整
SED是什么?

发表于 2013-1-23 13:59 |显示全部楼层
此文章由 北风 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 北风 所有!转贴必须注明作者、出处和本声明,并保持内容完整
北风 发表于 2013-1-23 12:57
SED是什么?

哦,学习了
http://www.grymoire.com/Unix/Sed.html
If you let people believe that you are weak, sooner or later you’re going to have to kill them.
头像被屏蔽

禁止访问

发表于 2013-1-23 14:07 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
wenwenmum 发表于 2013-1-23 12:45
in notepad++  open the file, set encoding to ISO-8859-1 and then convert to utf-8

谢了,这样还是不行,等于重做了一遍我出错的地方
头像被屏蔽

禁止访问

发表于 2013-1-23 14:10 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
北风 发表于 2013-1-23 12:59
哦,学习了
http://www.grymoire.com/Unix/Sed.html

谢了,我也学习了,千万不要手贱去摸数据库文件,
就算要摸,用工具摸,用文件编辑器去摸,容易出事。

之前摸了很多次,看来都是运气好,才没出事。

发表于 2013-1-23 14:14 |显示全部楼层
此文章由 Ausbear 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Ausbear 所有!转贴必须注明作者、出处和本声明,并保持内容完整
胆子真肥呀

评分

参与人数 1积分 +2 收起 理由
lingg + 2 阿弥陀佛

查看全部评分

Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2013-1-23 14:19 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
大意了。。。对于SED的依赖性太强,阿弥陀佛。要改要改。

我顺便问下吧,现有一个MYSQLDUMP --all-databases出来的整体备份,
只要恢复其中一个数据库,兄弟们平常是怎么做的?

发表于 2013-1-23 14:34 |显示全部楼层
此文章由 北风 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 北风 所有!转贴必须注明作者、出处和本声明,并保持内容完整
lingg 发表于 2013-1-23 13:19
大意了。。。对于SED的依赖性太强,阿弥陀佛。要改要改。

我顺便问下吧,现有一个MYSQLDUMP --all-databa ...

不了解mySQL,是几个数据库backup在一个文件里?
在restore的时候可以选哪个数据库吗?
好像mysql的backup是SQL文件,把关于你要restore的database的部分单独import是不是就行了?

评分

参与人数 1积分 +2 收起 理由
lingg + 2 感谢分享

查看全部评分

If you let people believe that you are weak, sooner or later you’re going to have to kill them.

特殊贡献奖章

发表于 2013-1-23 14:44 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
lingg 发表于 2013-1-23 13:19
大意了。。。对于SED的依赖性太强,阿弥陀佛。要改要改。

我顺便问下吧,现有一个MYSQLDUMP --all-databa ...

你把它全恢复,然后再dump你要的数据库就可以了

评分

参与人数 1积分 +2 收起 理由
lingg + 2 感谢分享

查看全部评分

头像被屏蔽

禁止访问

发表于 2013-1-23 14:49 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
kr2000 发表于 2013-1-23 13:44
你把它全恢复,然后再dump你要的数据库就可以了

这个。。。够呛。。。全恢复碰到小数据库还好说,稍微大一点的就只能撞墙了。

我以后还是老实点,用mysql command里面的一个数据库选项算了
头像被屏蔽

禁止访问

发表于 2013-1-23 15:11 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
北风 发表于 2013-1-23 13:34
不了解mySQL,是几个数据库backup在一个文件里?
在restore的时候可以选哪个数据库吗?
好像mysql的backu ...

唉,我2年前一定是嗑药了,这么明显的命令行都没看到。

mysql -D mydatabase -o < dump.sql
Advertisement
Advertisement

发表于 2013-1-25 17:04 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
保存了好像就改不回去了。。。
头像被屏蔽

禁止访问

发表于 2013-1-25 17:07 |显示全部楼层
此文章由 lingg 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 lingg 所有!转贴必须注明作者、出处和本声明,并保持内容完整
鱼羊鲜 发表于 2013-1-25 16:04
保存了好像就改不回去了。。。

嗯,不好改,要 专门收集这种误操作可能产生的 怪异字符 组合,
然后抓出来替换掉。

简单点的方案,如果只处理这个单引号,MYSQL里可以跑一下 UPDATE TABLE SET COLUMN (REPLACE , ‘’ ‘’)
具体语法GOOGLE上很多。

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部