我正在从各种RSS源中读出大量文本并将它们插入到我的数据库中.
当然,在馈送中使用了几种不同的字符编码,例如UTF-8和ISO-8859-1.
不幸的是,有时文本的编码存在问题.例:
"Fußball"中的"ß"应该在我的数据库中看起来像这样:"Ÿ".如果是"Ÿ",则会正确显示.
有时,"Fußball"中的"ß"在我的数据库中看起来像这样:"ß".当然,它显示错误.
在其他情况下,"ß"保存为"ß" - 所以没有任何改变.然后它也显示错误.
我该怎么做才能避免案例2和3?
如何使所有内容编码相同,最好是UTF-8?我utf8_encode()什么时候必须使用,什么时候必须使用utf8_decode()(很清楚效果是什么,但什么时候必须使用这些功能?)什么时候我必须对输入什么都不做?
你能帮助我并告诉我如何使一切编码相同吗?也许有功能mb_detect_encoding()?我能为此写一个函数吗?所以我的问题是:
像这样的功能会起作用吗?
function correct_encoding($text) {
    $current_encoding = mb_detect_encoding($text, 'auto');
    $text = iconv($current_encoding, 'UTF-8', $text);
    return $text;
}
我已经测试了它,但它不起作用.它出什么问题了?
在我们的应用中,我们收到的文本文件(.txt,.csv从不同的来源,等等).在阅读时,这些文件有时会包含垃圾,因为文件是在不同的/未知的代码页中创建的.
有没有办法(自动)检测文本文件的代码页?
的detectEncodingFromByteOrderMarks,对StreamReader构造,工程UTF8  和其他的Unicode标文件,但是我正在寻找一种方法来检测代码页,像ibm850,windows1252.
谢谢你的回答,这就是我所做的.
我们收到的文件来自最终用户,他们没有关于代码页的线索.接收者也是最终用户,到目前为止,这是他们对代码页的了解:代码页存在,并且令人讨厌.
解:
我收到了一些编码的文本,但我不知道使用了什么字符集.有没有办法使用Python确定文本文件的编码?如何检测文本文件的编码/代码页处理C#.
我有.txt和.java文件,我不知道如何确定文件的编码表(Unicode,UTF-8,ISO-8525,...).是否存在任何程序来确定文件编码或查看编码?
我正在开发一个代码库,由于多个团队成员使用不同的编辑器(以及默认设置)进行开发,因此散布了一些unicode编码文件.我想通过查找所有unicode编码文件并将它们转换回ANSI编码来清理我们的代码库.
任何关于如何完成这项任务的"发现"部分的想法都将得到真正的体会.
当读取在我的应用程序之外的其他位置创建的文本文件时,使用的编码是未知的.我的应用程序正在使用NSUnicodeStringEncoding(与NSUTF16StringEncoding相同),因此读取UTF16编码文件以外的其他问题.
有没有办法可以猜出文件的编码?我的首要任务是能够读取UTF8文件,然后读取所有其他文件.迭代可用的编码并检查读取字符串的长度是否大于零真的是一个好方法吗?
提前致谢.
伊格纳西奥
我在尝试识别没有BOM的文件的编码时遇到了问题,特别是当文件以非ascii字符开头时.
我找到了关于如何识别文件编码的两个主题,
目前,我创建了一个类来识别文件的不同编码(例如UTF-8,UTF-16,UTF-32,UTF-16无BOM等),如下所示,
public class UnicodeReader extends Reader {
private static final int BOM_SIZE = 4;
private final InputStreamReader reader;
/**
 * Construct UnicodeReader
 * @param in Input stream.
 * @param defaultEncoding Default encoding to be used if BOM is not found,
 * or <code>null</code> to use system default encoding.
 * @throws IOException If an I/O error occurs.
 */
public UnicodeReader(InputStream in, String defaultEncoding) throws IOException {
    byte bom[] = new byte[BOM_SIZE];
    String encoding;
    int unread;
    PushbackInputStream pushbackStream …我需要将文本文件转换为String,最后,我应该将其作为输入参数(类型为InputStream)放到IFile.create(Eclipse)中.寻找示例或如何做但仍然无法弄清楚...需要你的帮助!
只是为了测试,我尝试将原始文本文件转换为使用此代码编码的UTF-8
FileInputStream fis = new FileInputStream(FilePath);
InputStreamReader isr = new InputStreamReader(fis);
Reader in = new BufferedReader(isr);
StringBuffer buffer = new StringBuffer();
int ch;
while ((ch = in.read()) > -1) {
    buffer.append((char)ch);
}
in.close();
FileOutputStream fos = new FileOutputStream(FilePath+".test.txt");
Writer out = new OutputStreamWriter(fos, "UTF8");
out.write(buffer.toString());
out.close();
但即使最终的*.test.txt文件有UTF-8编码,里面的字符也会被破坏.
我正在将CSV文件导入Ruby(1.8.7).File.open('path/to/file.csv').read在控制台中返回:
Stefan,Engstr\232m
UniversalDetector(chardet gem)将编码标识为iso-8859-2.
UniversalDetector::chardet("Stefan,Engstr\232m")
=> {"confidence"=>0.626936305574385, "encoding"=>"ISO-8859-2"} 
尝试转换字符串会产生以下结果:
Iconv.conv("UTF-8", "ISO-8859-2", "Stefan,Engstr\232m")
 => "Stefan,Engstrm"
而我希望:
 => "Stefan,Engström"
如果我应该提供更多信息或详细说明某些事情,请告诉我.