我需要找到放在目录中的所有文件的编码.有没有办法找到使用的编码?
该file命令无法执行此操作.
我感兴趣的编码是:ISO-8859-1.如果编码是其他任何东西,我想将文件移动到另一个目录.
这不是一个真正的编程问题,是否有命令行或Windows工具(Windows 7)来获取文本文件的当前编码?当然我可以写一个小C#应用程序,但我想知道是否有内置的东西?
我在我的OSX上有一个PHP项目,它是在latin1 -encoding中.现在我需要将文件转换为UTF8.我不是一个shell编码器,我尝试过从互联网上找到的东西:
mkdir new
for a in `ls -R *`; do iconv -f iso-8859-1 -t utf-8 <"$a" >new/"$a" ; done
Run Code Online (Sandbox Code Playgroud)
但这不会创建目录结构,它会让我在运行时加载错误.任何人都可以拿出整洁的解决方案吗?
我在Firefox Web控制台的JS选项卡中收到以下警告(Ctrl+ Shift+ K)
在Windows-1252编码中提交的表单无法对所有Unicode字符进行编码,因此用户输入可能会损坏.要避免此问题,应更改页面,以便通过将页面本身的编码更改为UTF-8或在表单元素上指定accept-charset = utf-8,以UTF-8编码提交表单.@
http://localhost:8080/myapp/login
html显式使用utf-8编码,如下所示:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />;
Run Code Online (Sandbox Code Playgroud)
html(实际上是Freemarker模板)文件以前是在Windows机器上.所以我使用这里建议的recode实用程序将它们重新编码为utf-8 .但我仍然看到同样的警告.
我在这里错过了什么?
Chrome的开发者工具实用程序(Ctrl+ Shift+ I)中没有警告或错误
我知道有两种设置编码的方法:
由于 Content-Type 标头不是强制性的,需要明确设置(服务器端可以根据需要设置),并且元标记也是可选的。
如果这两个都不存在,浏览器如何确定用于解析内容的编码?
我希望我的C#应用程序(具有GUI)可以帮助用户在“ unicode(utf-8)”和“旧版(cp1252)”之间进行选择。我想为用户提供两个独立的正确/错误读数,以了解是否可以以这两种格式“成功”(尽管不一定正确)读取文件,而不会丢失细节。
当我在C#中尝试以下操作时,它不起作用。也就是说,即使我在我知道包含非罗马字符的utf-8文本文件上调用它,它似乎总是返回true。
[编辑:实际上,我不应该以为这会失败。这可能是碰巧不正确的合理成功之一,因为大多数(所有?)字节流也是有效的cp1252。测试另一个方向确实会发现无效的utf-8,就像下面的Python代码一样。]
例如CanBeReadAs(“ nepali.txt”,Encoding.GetEncoding(1252))应该返回false,但返回true。
public static bool CanBeReadAs(string filePath, Encoding encoding)
{
// make it strict:
encoding = Encoding.GetEncoding(encoding.CodePage, EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback);
using (var r = new StreamReader(filePath, encoding, false))
{
try
{
r.ReadToEnd();
}
catch (Exception e)
{
//swallow
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用“ string s = r.ReadToEnd();” 只是为了确保确实要对数据进行解码,但这似乎没有任何影响。
我究竟做错了什么?
注意:如果需要做一些特殊的事情来处理BOM,请也告诉我。如果那很简单,我倾向于忽略它们。(尽管其中一些文件混合使用了BTW编码,但我想实际上以BOM表开头的任何东西都是纯unicode。)
这是我创建的Python脚本,它使用相同的策略并且运行良好:
def bad_encoding(filename, enc='utf-8', max=9):
'''Return a list of up to max error strings for lines in the file not encoded in the specified …Run Code Online (Sandbox Code Playgroud)