相关疑难解决方法(0)

检测编码并使所有内容UTF-8

我正在从各种RSS源中读出大量文本并将它们插入到我的数据库中.

当然,在馈送中使用了几种不同的字符编码,例如UTF-8和ISO-8859-1.

不幸的是,有时文本的编码存在问题.例:

  1. "Fußball"中的"ß"应该在我的数据库中看起来像这样:"Ÿ".如果是"Ÿ",则会正确显示.

  2. 有时,"Fußball"中的"ß"在我的数据库中看起来像这样:"ß".当然,它显示错误.

  3. 在其他情况下,"ß"保存为"ß" - 所以没有任何改变.然后它也显示错误.

我该怎么做才能避免案例2和3?

如何使所有内容编码相同,最好是UTF-8?我utf8_encode()什么时候必须使用,什么时候必须使用utf8_decode()(很清楚效果是什么,但什么时候必须使用这些功能?)什么时候我必须对输入什么都不做?

你能帮助我并告诉我如何使一切编码相同吗?也许有功能mb_detect_encoding()?我能为此写一个函数吗?所以我的问题是:

  1. 如何找出文本使用的编码?
  2. 如何将其转换为UTF-8 - 无论旧的编码是什么?

像这样的功能会起作用吗?

function correct_encoding($text) {
    $current_encoding = mb_detect_encoding($text, 'auto');
    $text = iconv($current_encoding, 'UTF-8', $text);
    return $text;
}
Run Code Online (Sandbox Code Playgroud)

我已经测试了它,但它不起作用.它出什么问题了?

php encoding utf-8 character-encoding

293
推荐指数
7
解决办法
34万
查看次数

如何检测文本文件的编码/代码页

在我们的应用中,我们收到的文本文件(.txt,.csv从不同的来源,等等).在阅读时,这些文件有时会包含垃圾,因为文件是在不同的/未知的代码页中创建的.

有没有办法(自动)检测文本文件的代码页?

detectEncodingFromByteOrderMarks,对StreamReader构造,工程UTF8 和其他的Unicode标文件,但是我正在寻找一种方法来检测代码页,像ibm850,windows1252.


谢谢你的回答,这就是我所做的.

我们收到的文件来自最终用户,他们没有关于代码页的线索.接收者也是最终用户,到目前为止,这是他们对代码页的了解:代码页存在,并且令人讨厌.

解:

  • 在记事本中打开收到的文件,查看一段乱码文本.如果有人被称为弗朗索瓦(François)或其他东西,那么凭借你的人类智慧你可以猜到这一点
  • 我创建了一个小应用程序,用户可以使用该应用程序打开文件,并在使用正确的代码页时输入用户知道它将出现在文件中的文本.
  • 遍历所有代码页,并显示提供用户提供的文本解决方案的代码页.
  • 如果弹出一个代码页,请让用户指定更多文本.

.net c# globalization encoding text

292
推荐指数
8
解决办法
29万
查看次数

如何确定文本的编码?

我收到了一些编码的文本,但我不知道使用了什么字符集.有没有办法使用Python确定文本文件的编码?如何检测文本文件的编码/代码页处理C#.

python encoding text-files

204
推荐指数
7
解决办法
20万
查看次数

如何确定文本文件的编码表

我有.txt.java文件,我不知道如何确定文件的编码表(Unicode,UTF-8,ISO-8525,...).是否存在任何程序来确定文件编码或查看编码?

unicode encoding text character-encoding

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

在Windows中识别unicode编码文本文件的最佳方法是什么?

我正在开发一个代码库,由于多个团队成员使用不同的编辑器(以及默认设置)进行开发,因此散布了一些unicode编码文件.我想通过查找所有unicode编码文件并将它们转换回ANSI编码来清理我们的代码库.

任何关于如何完成这项任务的"发现"部分的想法都将得到真正的体会.

windows unicode search

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

如何在不知道编码的情况下阅读文本文件

当读取在我的应用程序之外的其他位置创建的文本文件时,使用的编码是未知的.我的应用程序正在使用NSUnicodeStringEncoding(与NSUTF16StringEncoding相同),因此读取UTF16编码文件以外的其他问题.

有没有办法可以猜出文件的编码?我的首要任务是能够读取UTF8文件,然后读取所有其他文件.迭代可用的编码并检查读取字符串的长度是否大于零真的是一个好方法吗?

提前致谢.

伊格纳西奥

iphone encoding text nsstring

7
推荐指数
1
解决办法
5730
查看次数

如何在不使用BOM且以非ASCII字符开头的情况下识别针对文件的不同编码?

我在尝试识别没有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 …
Run Code Online (Sandbox Code Playgroud)

java unicode encoding byte-order-mark non-ascii-characters

5
推荐指数
1
解决办法
2478
查看次数

将具有已知编码的文件转换为UTF-8

我需要将文本文件转换为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();
Run Code Online (Sandbox Code Playgroud)

但即使最终的*.test.txt文件有UTF-8编码,里面的字符也会被破坏.

java eclipse unicode encoding utf-8

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

Ruby和编码转换

我正在将CSV文件导入Ruby(1.8.7).File.open('path/to/file.csv').read在控制台中返回:

Stefan,Engstr\232m
Run Code Online (Sandbox Code Playgroud)

UniversalDetector(chardet gem)将编码标识为iso-8859-2.

UniversalDetector::chardet("Stefan,Engstr\232m")
=> {"confidence"=>0.626936305574385, "encoding"=>"ISO-8859-2"} 
Run Code Online (Sandbox Code Playgroud)

尝试转换字符串会产生以下结果:

Iconv.conv("UTF-8", "ISO-8859-2", "Stefan,Engstr\232m")
 => "Stefan,Engstrm"
Run Code Online (Sandbox Code Playgroud)

而我希望:

 => "Stefan,Engström"
Run Code Online (Sandbox Code Playgroud)
  • 字符串真的可以用于其他编码吗?
  • 我之前没有见过\ 232语法,通常当字符串奇怪编码时,会出现一些奇怪的字符,例如 或一些中文.

如果我应该提供更多信息或详细说明某些事情,请告诉我.

ruby string encoding ruby-on-rails

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