我的问题很简单,但目前我不知道该怎么做。我有一个 ISO-8859-1 格式的字符串,我需要将该字符串转换为 UTF-8。我需要在 Windows Phone 7 sdk 上用 C# 执行此操作。我该怎么做?谢谢
我在 SQL Server 2008 R2 的表中获取了数据,并尝试将其输出到 CSV 文件。然后,我必须将此 CSV 文件导入第三方专有系统,该系统要求将此文件编码为 ISO-8859-1。特别是,我们得到了一些带有“\xc5\xa0”字符的值,它是 Windows-1252 中的代码点 8A,但没有出现在 ISO-8859-1 中。我想消除/修复这些字符(以及ISO 标准中未出现的所有其他 8_ 和 9_ 代码点),而无需手动修改文件。完全使用 SQL 或使用 BCP 参数来完成此操作将是理想的选择。
\n\n我能得到的最接近的 BCP 是使用 Windows-1252:
\n\nbcp tableName out outputFile.csv -c -C 1252 -t, -S server -T\nRun Code Online (Sandbox Code Playgroud)\n\n是否有一个代码页可以给 BCP 来输出 ISO-8859-1?或者我可以应用于表格的排序规则?现在它们正在与 进行整理SQL_Latin1_General_CP1_CI_AS,但我认为这只是我们的默认设置或者是有点任意应用的。
我正在尝试读取包含法语字符(如 \xc3\xa9、\xc3\xa0 等)和带有 pandas 的电子邮件地址的 CSV 文件。
\n\n使用 utf-8 编码会出现错误。使用 latin-1 编码消除了我的 \xc3\xa9。
\n\n知道我应该使用什么编码吗?
\n\n谢谢,\n克里斯
\n我有角色"ö".如果我查看这个UTF-8表,我看到它有十六进制值F6.如果我查看Unicode表,我看到"ö"有索引E0和16.如果我添加两个,我得到代码点的十六进制值F6.这是二进制值 1111 0110.
1)如何从十六进制值F6到索引E0和16?
2)我不知道怎么来F6两个字节C3 B6......
因为我没有得到结果,我试图走另一条路."ö"在ISO-8859-1中表示为"Ã".在UTF-8表中,我可以看到"Ã"具有十进制值195,""具有十进制值182.这是转换为位1100 0011 1011 0110.
处理:
查看表格并获取字符"ö"的unicode.从指数计算E0和16你得到的统一U+00F6.
根据wildplasser发布的算法,您可以计算编码的UTF-8值C3和B6.
在二进制形式中,您得到的1100 0011 1011 0110对应于十进制值195和182.
如果这些值被解释为ISO 8859-1(仅1个字节),那么您将获得"Ã".
PS:我还找到了这个链接,它显示了第2步的值.
我有一个文字:
Á example link.
Run Code Online (Sandbox Code Playgroud)
在ISO-8859-1 Á中Á.
现在我试图将其转换Á为Á使用以下代码:
Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");
ByteBuffer inputBuffer = ByteBuffer.wrap(text.getBytes());
CharBuffer data = iso88591charset.decode(inputBuffer);
ByteBuffer outputBuffer = utf8charset.encode(data);
byte[] outputData = outputBuffer.array();
return new String(outputData);
Run Code Online (Sandbox Code Playgroud)
但它不会将其转换Á为Á.
有任何方法可以达到这个目的吗?
另外我想知道,给定一个String我们可以确定它是哪个Charset?
我正在从Java创建test.js,如下所示.Test.js实现函数d(),它接收参数特殊字符〜('\ u0098');
函数d()应显示此特殊字符的charCodeAt(),即152.但是,它显示732.
请注意,字符152和732均由特殊字符〜表示,如下所示.
http://www.fileformat.info/info/unicode/char/098/index.htm
http://www.fileformat.info/info/unicode/char/2dc/index.htm
如何强制功能d()显示152而不是732?(charset问题?).谢谢
TEST.JAVA
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setHeader("Content-Type", "text/javascript;charset=ISO-8859-1");
res.setHeader("Content-Disposition","attachment;filename=test.js");
res.setCharacterEncoding("ISO-8859-1");
PrintWriter printer=res.getWriter();
printer.write("function d(a){a=(a+\"\").split(\"\");alert(a[0].charCodeAt(0));};d(\""); // Writes beginning of d() function
printer.write('\u0098'); // Writes special character as parameter of d()
printer.write("\");"); // Writes end of d() function
printer.close();
}
Run Code Online (Sandbox Code Playgroud)
TEST.JS由TEST.JAVA创建
function d(a)
{
a=(a+"").split("");
alert(a[0].charCodeAt(0));
};
d("˜"); // Note special character representing '\u0098'
Run Code Online (Sandbox Code Playgroud)
的test.html
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
<script type="text/javascript" charset="ISO-8859-1" src="test.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我不知道这是否有意义,但这就是我所做的.
我正在使用Eclipse使用UTF-8编码来处理我的所有文件.在其中一个中,我需要将一个字符串从ISO-8859-1转换为UTF-8.然而,该字符串是在文件本身内形成的(不是来自输入),这就是为什么我认为我的字符串以UTF-8开头并且转换不按照我预期的方式进行.
String原始内容是:
||3.2|2013-01-25T17:24:00|ingreso|PAGO EN UNA SOLA EXHIBICION|6386.21|MXN|7408.00|No identificado|NAUCALPAN DE JUÁREZ, ESTADO DE MEXICO|CAOS640116HT5|OSCAR MARTIN CARRERA|CTO. ORADORES 33|33|CD. SATELITE|NAUCALPAN DE JUÁREZ|ESTADO DE MEXICO|MÉXICO|53100|CTO. ORADORES 33|33|CD. SATELITE|NAUCALPAN DE JUÁREZ|ESTADO DE MEXICO|MÉXICO|53100|Persona Física con Actividad Empresarial|BAÑ930616R66|BAÑOMOBIL, S.A. DE C.V.|Av. 1° de Mayo|197|San. Lorenzo|TLALNEPANTLA DE BAZ|ESTADO DE MEXICO|MÉXICO|54047|1|NO APLICA|Dominio .com|Dominio por 1 año www.sanitariosportatiles.com|586.21|586.21|1|NO APLICA|Hospedaje 2 Gb|Hospedaje 2 Gb por 1 año www.sanitariosportatiles.com|5800.00|5800.00|IVA|16.00|1021.79|1021.79||
Run Code Online (Sandbox Code Playgroud)
哪个原始编码应该是ISO-8859-1,当我将其转换为UTF-8时应该生成.
||3.2|2013-01-25T17:05:06|ingreso|PAGO EN UNA SOLA EXHIBICION|6386.21|MXN|7408.00|No identificado|NAUCALPAN DE JUÃREZ, ESTADO DE MEXICO|CAOS640116HT5|OSCAR MARTIN CARRERA|CTO. ORADORES 33|33|CD. SATELITE|NAUCALPAN DE JUÃREZ|ESTADO DE …Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,我们需要将我们的信息保存在具有ISO-8859-1表的遗留数据库中.因此,在向数据库写入内容之前,我需要将其从UTF-8转换为ISO-8859-1,每次从数据库中检索它时,我都需要将其转换回UTF-8.
我试图使用库code.google.com/p/go-charset/作为我需要保留的每个文本字段的以下内容.
import (
"bytes"
"code.google.com/p/go-charset/charset"
_ "code.google.com/p/go-charset/data"
"fmt"
"io/ioutil"
"strings"
)
func toISO88591(utf8 string) string {
buf := new(bytes.Buffer)
w, err := charset.NewWriter("latin1", buf)
if err != nil {
panic(err)
}
defer w.Close()
fmt.Fprintf(w, utf8)
return buf.String()
}
func fromISO88591(iso88591 string) string {
r, err := charset.NewReader("latin1", strings.NewReader(iso88591))
if err != nil {
panic(err)
}
buf, err := ioutil.ReadAll(r)
if err != nil {
panic(err)
}
return string(buf)
}
Run Code Online (Sandbox Code Playgroud)
问题是即使我使用函数toISO88591,数据仍然保持在UTF-8中.我在这次转换中做错了什么?
我的数据库是MySQL,我正在使用github.com/go-sql-driver/mysql驱动程序,其中包含以下连接参数:
<user>:<password>@tcp(<host>:<port>)/<database>?collation=latin1_general_ci
Run Code Online (Sandbox Code Playgroud)
最好的祝福!
它与iconv-lite一起用于节点0.10.但现在有了
$ node -v
v4.1.1
Run Code Online (Sandbox Code Playgroud)
我不能将iconv-lite与最新的节点版本一起使用.所以我试着回到Iconv:
var Iconv = require('iconv').Iconv;
...
request(url, {
uri: url,
method: 'GET'}, function (err, resp, body) {
var ic = new Iconv('ISO-8859-1', 'utf-8');
var buf = ic.convert(body);
body = buf.toString('utf-8');
Run Code Online (Sandbox Code Playgroud)
但这导致�ber它应该在哪里Über.
我不知道如何解决这个问题.欢迎任何提示.
我试图使用MySQLdb驱动程序将一些阿拉伯语单词插入arabic_word我的hanswehr2数据库Maria DB 的列中.
我得到了一个latin-1 encode error.但在阅读之后,我发现MySQLdb驱动程序是默认的latin-1,我必须在函数中明确设置utf-8为我的选择字符集mariadb.connect().酱.
整个数据库设置为utf-8.
码:
def insert_into_db(arabic_word, definition):
try:
conn = mariadb.connect('localhost', 'root', 'xyz1234passwd', 'hans_wehr', charset='utf-8', use_unicode=True)
conn.autocommit(True)
cur = conn.cursor()
cur.execute("INSERT INTO hanswehr2 (arabic_word , definition) VALUES (%s,%s)", (arabic_word, definition,))
except mariadb.Error, e:
print e
sys.exit(1)
Run Code Online (Sandbox Code Playgroud)
但是现在我收到以下错误:
/usr/bin/python2.7 /home/heisenberg/hans_wehr/main.py
Total lines 87672
(2019, "Can't initialize character set utf-8 (path: /usr/share/mysql/charsets/)")
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)
我已经指定Python MySQL驱动程序使用utf-8字符,但它似乎忽略了这一点.
任何投入都将受到高度赞赏.