javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

unicode-python编码utf-8

我正在用python做一些脚本。 我创建一个保存在文件中的字符串。 这个字符串有很多数据,来自目录的树状结构和文件名。根据convmv的介绍,我所有的树状结构都是UTF-8。

我想将所有内容都保留在UTF-8中,因为之后将其保存在MySQL中。现在,在UTF-8的MySQL中,我遇到了一些字符问题(例如é或è-我是法语)。

我希望python始终将字符串用作UTF-8。 我在互联网上阅读了一些信息,我确实是这样。

我的脚本以此开头:

 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 def createIndex():
     import codecs
     toUtf8=codecs.getencoder('UTF8')
     #lot of operations & building indexSTR the string who matter
     findex=open('config/index/music_vibration_'+date+'.index','a')
     findex.write(codecs.BOM_UTF8)
     findex.write(toUtf8(indexSTR)) #this bugs!

当我执行时,这是答案:SHOW variables LIKE 'char%'

编辑:我发现在我的档案中口音写得很好。 创建此文件后,我将其读取并将其写入MySQL。但是我不明白为什么,但是我在编码方面遇到了问题。我的MySQL数据库位于utf8中,或者似乎是SQL查询SHOW variables LIKE 'char%'仅向我返回utf8或二进制。

我的功能看起来像这样:

#!/usr/bin/python
# -*- coding: utf-8 -*-

def saveIndex(index,date):
    import MySQLdb as mdb
    import codecs

    sql = mdb.connect('localhost','admin','*******','music_vibration')
    sql.charset="utf8"
    findex=open('config/index/'+index,'r')
    lines=findex.readlines()
    for line in lines:
        if line.find('#artiste') != -1:
            artiste=line.split('[:::]')
            artiste=artiste[1].replace('\n','')

            c=sql.cursor()
            c.execute('SELECT COUNT(id) AS nbr FROM artistes WHERE nom="'+artiste+'"')
            nbr=c.fetchone()
            if nbr[0]==0:
                c=sql.cursor()
                iArt+=1
                c.execute('INSERT INTO artistes(nom,status,path) VALUES("'+artiste+'",99,"'+artiste+'/")'.encode('utf8')

很好地显示在文件中的Artiste会将错误写入BDD。问题是什么 ?

trans by 2020-08-12T04:04:14Z

Ruby / Rails CSV解析,UTF-8中无效的字节序列

我正在尝试解析从Excel电子表格生成的CSV文件。

这是我的代码

require 'csv'
file = File.open("input_file")
csv = CSV.parse(file)

但是我得到这个错误

ArgumentError: invalid byte sequence in UTF-8

我认为错误是因为Excel将文件编码为ISO 8859-1 (Latin-1),而不是UTF-8

有人可以帮我解决此问题的方法吗

提前致谢。

trans by 2020-08-10T15:53:35Z

如何在Android资源中使用unicode?

我想在资源文件中使用此unicode字符。

但是,无论我做什么,我都以dalvikvm崩溃结束(已通过Android 2.3和4.2.2测试):

W/dalvikvm( 8797): JNI WARNING: input is not valid Modified UTF-8: illegal start byte 0xf0
W/dalvikvm( 8797):              string: '📡'
W/dalvikvm( 8797):              in Landroid/content/res/StringBlock;.nativeGetString:(II)Ljava/lang/String; (NewStringUTF)
E/dalvikvm( 8797): VM aborting
F/libc    ( 8797): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 8797 (cz.ipex...)

我在资源文件中尝试了以下版本:

<string name="geolocation_icon" translatable="false">&#x1f4e1;</string> <!-- HTML -->
<string name="geolocation_icon" translatable="false">\uD83D\uDCE1</string> <!-- escaped unicode -->
<string name="geolocation_icon" translatable="false">📡</string> <!-- unicode character -->

请注意,在代码中的Java String中使用它可以正常工作:

final String geolocation_icon = "\uD83D\uDCE1";
trans by 2020-08-10T14:12:29Z

将UTF-8编码的数据发布到服务器会丢失某些字符

我正在从事包括服务器(JavaEE应用程序)和客户端(Android应用程序)通信的项目。 XML作为HTTP请求的POST参数之一发送(称为“ xml”)。 我还传递给服务器的其他一些POST参数,但是为了简单起见,在下面的函数中,我将其删除。 发生的问题是某些字母未正确传递到服务器,例如字符Ű(请注意,这不是德语Ü,顺便说一句正确传递了)。 发送代码如下:

private String postSyncXML(String XML) {
    String url = "http://10.0.2.2:8080/DebugServlet/DebugServlet";
    HttpClient httpclient = new DefaultHttpClient();  

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("xml",XML));

    UrlEncodedFormEntity form;
    try {
        form = new UrlEncodedFormEntity(nameValuePairs);
                form.setContentEncoding(HTTP.UTF_8);
        HttpPost httppost = new HttpPost(url);

        httppost.setEntity(form);

        HttpResponse response = (HttpResponse) httpclient .execute(httppost);
        HttpEntity resEntity = response.getEntity();  
        String resp = EntityUtils.toString(resEntity);
        Log.i(TAG,"postSyncXML srv response:"+resp);
        return resp;
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

我的猜测是问题出在BasicNameValuePair中,我用于将XML设置为POST参数之一,并且其文档说它使用US-ASCII字符集。 发送UTF-8编码的POST字段的正确方法是什么?

trans by 2020-08-10T07:37:14Z

linux-如何在文本fi中检测到无效的utf8 unicode / binary

我需要检测存在无效(非ASCII)utf-8,Unicode或二进制字符的文本文件。

�>t�ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½w�ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿½ï¿½ï¿½ï¿½ï¿½o��������ï¿ï¿½_��������������������o����������������������￿����ß����������ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½~�ï¿ï¿½ï¿½ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½}���������}w��׿��������������������������������������ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½~������������������������������������_������������������������������������������������������������������������������^����ï¿ï¿½s�����������������������������?�������������ï¿ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½w�������������ï¿ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿½}����������ï¿ï¿½ï¿½ï¿½ï¿½y����������������ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½o�������������������������}��

我尝试过的

iconv -f utf-8 -t utf-8 -c file.csv 

这会将文件从utf-8编码转换为utf-8编码,并且-c用于跳过无效的utf-8字符。 但是最后那些非法字符仍然被打印出来。 在Linux或其他语言上的bash中还有其他解决方案吗?

trans by 2020-08-08T19:39:01Z

java-从字符串中提取所有表情符号的正则表达式是什么?

我有一个用UTF-8编码的字符串。 例如:

Thats a nice joke 😆😆😆 😛

我必须提取句子中存在的所有表情符号。 表情符号可以是任何

当使用命令less text.txt在终端中查看此句子时,其显示为:

Thats a nice joke <U+1F606><U+1F606><U+1F606> <U+1F61B>

这是表情符号的对应UTF代码。 表情符号的所有代码都可以在emojitracker中找到。

为了查找所有出现的内容,我使用了正则表达式模式Range: 1F300–1F5FF for Miscellaneous Symbols and Pictographs,但不适用于UTF-8编码的字符串。

以下是我的代码:

    String s="Thats a nice joke 😆😆😆 😛";
    Pattern pattern = Pattern.compile("(<U\\+\\w+?>)");
    Matcher matcher = pattern.matcher(s);
    List<String> matchList = new ArrayList<String>();

    while (matcher.find()) {
        matchList.add(matcher.group());
    }

    for(int i=0;i<matchList.size();i++){
        System.out.println(matchList.get(i));

    }

该pdf内容为Range: 1F300–1F5FF for Miscellaneous Symbols and Pictographs。因此,我想捕获此范围内的任何字符。

trans by 2020-08-07T06:27:41Z

ruby-使用utf-8编码写入和读取文件

我一直在阅读所有与UTF-8相关的问题和博客文章,并且在test.rb文件中有以下示例:

# encoding: UTF-8
File.open("test.txt", "w") do |f|
  f.write "test © foo"
end

File.open("test.txt", "r") do |f|
  puts f.read
end

这很完美。 是在文件中正确生成©符号,然后将©读回给我,然后将其打印在屏幕上。

但是当我在实际项目中使用相同的代码时,会将其写入文件而不是©符号:\u00A9

FWIW:对我的代码运行rspec(v1.2.9)测试时,我得到了这个结果。 规范会生成一个带有©符号的文件,然后再读回该文件以检查其内容。

目前,我正在Ruby 1.9.2中运行它,但是我还需要一直支持到Ruby 1.8.6。 这是带有RubyInstaller.org版本的Windows环境。

trans by 2020-08-06T07:11:44Z

utf 8-PHP替换à-> a,è->等特殊字符

我有php文档signup.php,它将内容从form(在form.php文档中)保存到MySQL基础。 当我要重新格式化输入内容时会出现问题。 我想对à-> a这样的UTF-8字符进行解码。

  $first_name=$_POST['first_name'];
  $last_name=$_POST['last_name'];
  $course=$_POST['course'];

  $chain="prêt-à-porter";

$pattern = array("'é'", "'è'", "'ë'", "'ê'", "'É'", "'È'", "'Ë'", "'Ê'", "'á'", "'à'", "'ä'", "'â'", "'å'", "'Á'", "'À'", "'Ä'", "'Â'", "'Å'", "'ó'", "'ò'", "'ö'", "'ô'", "'Ó'", "'Ò'", "'Ö'", "'Ô'", "'í'", "'ì'", "'ï'", "'î'", "'Í'", "'Ì'", "'Ï'", "'Î'", "'ú'", "'ù'", "'ü'", "'û'", "'Ú'", "'Ù'", "'Ü'", "'Û'", "'ý'", "'ÿ'", "'Ý'", "'ø'", "'Ø'", "'œ'", "'Œ'", "'Æ'", "'ç'", "'Ç'");

$replace = array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E', 'a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'o', 'o', 'o', 'o', 'O', 'O', 'O', 'O', 'i', 'i', 'i', 'I', 'I', 'I', 'I', 'I', 'u', 'u', 'u', 'u', 'U', 'U', 'U', 'U', 'y', 'y', 'Y', 'o', 'O', 'a', 'A', 'A', 'c', 'C'); 

$chain = preg_replace($pattern, $replace, $chain);

echo $chain; // print pret-a-porter

$first_name =  preg_replace($pattern, $replace, $first_name);

echo $first_name; // does not change the input!?!

为什么它对$ chain完美起作用,但对于$ first_name和$ last_name不起作用?

我也尝试

echo $first_name; // print áááááábéééééébšššš
$trans = array("á" => "a", "é" => "e", "š" => "s");
echo strtr("áááááábéééééébšššš", $trans); // print aaaaaabeeeeeebssss
echo strtr($first_name,$trans);  // print áááááábéééééébšššš

但是,正如您所看到的,问题是相同的!

trans by 2020-08-04T23:44:15Z

utf 8-PHP:用UTF-8字符串中最接近的7位ASCII等效字符替换变音符号

我想做的是从字符串中删除所有重音符号和变音符号,将“lärm”变成“ larm”,或者将“andré”变成“ andre”。 我尝试执行的操作是先对字符串进行utf8_decode,然后在其上使用strtr,但是由于我的源文件另存为UTF-8文件,因此我无法为所有变音符号输入ISO-8859-15字符-编辑器将插入 UTF-8字符。

显然,解决方案是拥有一个包含ISO-8859-15文件的包含文件,但是有比拥有另一个所需包含文件更好的方法吗?

echo strtr(utf8_decode($input), 
           'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ',
           'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');

更新:也许我对尝试做的事情有点不准确:我实际上并不是要删除变音符号,而是将其替换为最接近的“一个字符ASCII”。

trans by 2020-08-02T15:19:29Z

编码-将utf8字符转换为iso-88591并返回到PHP

我的某些脚本使用了不同的编码,当我尝试将它们组合时,这已成为一个问题。

但是我无法更改它们使用的编码,相反,我想更改脚本A中结果的编码,并将其用作脚本B中的参数。

所以:有什么简单的方法可以在PHP中将字符串从UTF-8更改为ISO-88591? 我看过utf_encode和_decode,但是它们没有做我想要的。 为什么不存在任何“ utf2iso()”功能或类似功能?

我认为我的字符不能以ISO格式编写,因此这不是一个大问题。

trans by 2020-07-31T02:42:15Z

macos-OS X终端UTF-8问题

好的,经过15年的Linux,我终于有了MacBook Air。 在得到它之前,我最关心的是UTF-8支持,因为无论我是从Windows还是从Mac客户端发送文件给我,编码总是会出现问题,而在ubuntu上我可以确保无论使用哪种程序,所有输出都可以 产生完美的utf-8编码数据。

现在,在第二天(今天),OS X Im沮丧地撕了我的头发。 为什么?

当我打开Nano并在其中键入一些像ÅÄÖ之类的瑞典字符时,它在行的末尾放出空白字符(我猜这是每个字符中的另一个字节)

当我打开python并尝试使用瑞典语字符时,它根本不输出任何内容

当我通过SSH连接到Ubuntu服务器时,无法在bash中键入åäö,很难在VIM中使用(仍然通过SSH)。 并且在nano退格中不起作用,但是如果在“终端”首选项中选中“删除发送ctrl + H”复选框,则退格在nano中开始工作,但在VIM中停止。

我尝试取消选中终端首选项中的所有其他编码,然后选择UTF-8,但这似乎也不起作用。

我确定每个非美国人都必须有相同的问题,那么我该如何解决? 我只想要完整的UTF-8支持...:'(

trans by 2020-07-30T18:35:53Z

unicode-如何制作python 3 print()utf8

如何在utf-8中将python 3(3.1)printRAW(chr(252))转换为stdout,或者如何输出原始字节?

Test.py

TestText = "Test - āĀēĒčČ..šŠūŪžŽ" # this is UTF-8
TestText2 = b"Test2 - \xc4\x81\xc4\x80\xc4\x93\xc4\x92\xc4\x8d\xc4\x8c..\xc5\xa1\xc5\xa0\xc5\xab\xc5\xaa\xc5\xbe\xc5\xbd" # just bytes
print(sys.getdefaultencoding())
print(sys.stdout.encoding)
print(TestText)
print(TestText.encode("utf8"))
print(TestText.encode("cp1252","replace"))
print(TestText2)

输出(在CP1257中,我将char替换为字节值printRAW(chr(252))):

utf-8
cp1257
Test - [xE2][xC2][xE7][C7][xE8][xC8]..[xF0][xD0][xFB][xDB][xFE][xDE]  
b'Test - \xc4\x81\xc4\x80\xc4\x93\xc4\x92\xc4\x8d\xc4\x8c..\xc5\xa1\xc5\xa0\xc5\xab\xc5\xaa\xc5\xbe\xc5\xbd'
b'Test - ??????..\x9a\x8a??\x9e\x8e'
b'Test2 - \xc4\x81\xc4\x80\xc4\x93\xc4\x92\xc4\x8d\xc4\x8c..\xc5\xa1\xc5\xa0\xc5\xab\xc5\xaa\xc5\xbe\xc5\xbd'

printRAW(chr(252))太聪明了...:D没有必要在ü上使用编码文本(因为它始终只显示字节表示而不是真实字节),根本不可能输出字节,因为无论如何都要进行打印并始终以[xC3][xBC]进行编码。

例如:printRAW(chr(252))引发错误:

printRAW(chr(252))

顺便说一下,尽管打印输出是相同的,printRAW(chr(252))返回ü


Python 3如何确定printRAW(chr(252)),如何更改它?

我做了一个printRAW(chr(252))函数,该函数可以正常工作(实际上它会将输出编码为UTF-8,所以实际上它不是原始的...):

 def printRAW(*Text):
     RAWOut = open(1, 'w', encoding='utf8', closefd=False)
     print(*Text, file=RAWOut)
     RAWOut.flush()
     RAWOut.close()

 printRAW("Cool", TestText)

输出(现在以UTF-8打印):

printRAW(chr(252))

printRAW(chr(252))也可以很好地打印ü(在UTF-8中,[xC3][xBC])并且没有错误:)

现在,我正在寻找可能更好的解决方案...

trans by 2020-07-28T08:22:34Z

JavaScript-将UTF-8 BOM添加到字符串/ Blob

我需要在客户端生成的文本数据中添加UTF-8字节顺序标记。 我怎么做?

当然,使用29846125145180018002会得出'\x22' == '"'

'\uBBEF\x22BF'也不起作用(其中'\x22' == '"'content中的下一个字符)。

是否可以在JavaScript中将UTF-8 BOM附加到生成的文本之前?

是的,在这种情况下,我确实确实需要UTF-8 BOM。

trans by 2020-07-27T07:21:31Z

api-如何为PHP fi设置UTF-8编码

我有一个PHP脚本,名为:

[HTTP://cyber-flick.com/API morph O.PHP?method=get morph o data&word=KO他]

以纯文本显示一些数据:

Cz��� mowy: rzeczownik
Przypadek: dope�niacz
Rodzaj: şe�ski
Liczba: mnoga

正如您所看到的那样,在适当的字符位置上有很多“空格”。 我想做的是以某种方式显示此内容,以便人们在浏览器中看到正确的UTF-8字符。

您可以将其封装在HMTL标签中,并设置为meta UTF-8编码,但是由于将从该脚本接收的数据进行进一步处理,因此我不想使用任何HTML标签,因此它应该只是纯文本结果集。

那么有没有一种方法可以在不使用元标记的情况下通知浏览器该文件为UTF-8?

PS。 文件以UTF-8编码,如果我在浏览器中手动将字符集编码更改为UTF-8,它会显示ok,但是我想完成的是不需要这样做的人。

trans by 2020-07-27T03:20:18Z

Python 2.6中对csv文件的常规Unicode / UTF-8支持

当涉及UTF-8 / Unicode时,Python中的csv模块无法正常工作。 我在Python文档和其他网页中发现了适用于特定情况的代码段,但您必须清楚地了解要处理的编码并使用适当的代码段。

如何在Python 2.6中“正常工作”的.csv文件中读写字符串和Unicode字符串? 还是这是没有简单解决方案的Python 2.6的局限性?

trans by 2020-07-26T19:45:18Z

编码-PowerShell的UTF-8输出

我正在尝试将Write-Host和重定向的I / O一起使用,以字符串形式调用Write-Output,并取回输出,所有这些都以UTF-8格式进行。 但是我似乎无法完成这项工作。

我尝试过的

  • 传递命令以通过Write-Host参数运行
  • 使用UTF-8编码将PowerShell脚本作为文件写入磁盘
  • 使用带有BOM编码的UTF-8将PowerShell脚本作为文件写入磁盘
  • 使用UTF-16将PowerShell脚本作为文件写入磁盘
  • 在控制台应用程序和PowerShell脚本中都设置Write-Host
  • 在PowerShell中设置Write-Host
  • 设置Write-Host
  • 使用Write-Host代替Write-Output来完成所有操作

在每种情况下,当我检查给出的字节时,都会得到与原始字符串不同的值。 我真的很想解释为什么它不起作用。

这是我的代码:

static void Main(string[] args)
{
    DumpBytes("Héllo");

    ExecuteCommand("PowerShell.exe", "-Command \"$OutputEncoding = [System.Text.Encoding]::UTF8 ; Write-Output 'Héllo';\"",
        Environment.CurrentDirectory, DumpBytes, DumpBytes);

    Console.ReadLine();
}

static void DumpBytes(string text)
{
    Console.Write(text + " " + string.Join(",", Encoding.UTF8.GetBytes(text).Select(b => b.ToString("X"))));
    Console.WriteLine();
}

static int ExecuteCommand(string executable, string arguments, string workingDirectory, Action<string> output, Action<string> error)
{
    try
    {
        using (var process = new Process())
        {
            process.StartInfo.FileName = executable;
            process.StartInfo.Arguments = arguments;
            process.StartInfo.WorkingDirectory = workingDirectory;
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.CreateNoWindow = true;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError = true;
            process.StartInfo.StandardOutputEncoding = Encoding.UTF8;
            process.StartInfo.StandardErrorEncoding = Encoding.UTF8;

            using (var outputWaitHandle = new AutoResetEvent(false))
            using (var errorWaitHandle = new AutoResetEvent(false))
            {
                process.OutputDataReceived += (sender, e) =>
                {
                    if (e.Data == null)
                    {
                        outputWaitHandle.Set();
                    }
                    else
                    {
                        output(e.Data);
                    }
                };

                process.ErrorDataReceived += (sender, e) =>
                {
                    if (e.Data == null)
                    {
                        errorWaitHandle.Set();
                    }
                    else
                    {
                        error(e.Data);
                    }
                };

                process.Start();

                process.BeginOutputReadLine();
                process.BeginErrorReadLine();

                process.WaitForExit();
                outputWaitHandle.WaitOne();
                errorWaitHandle.WaitOne();

                return process.ExitCode;
            }
        }
    }
    catch (Exception ex)
    {
        throw new Exception(string.Format("Error when attempting to execute {0}: {1}", executable, ex.Message),
            ex);
    }
}

更新1

我发现如果我编写此脚本:

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Write-Host "Héllo!"
[Console]::WriteLine("Héllo")

然后通过以下方式调用它:

ExecuteCommand("PowerShell.exe", "-File C:\\Users\\Paul\\Desktop\\Foo.ps1",
  Environment.CurrentDirectory, DumpBytes, DumpBytes);

第一行已损坏,但第二行未损坏:

H?llo! 48,EF,BF,BD,6C,6C,6F,21
Héllo 48,C3,A9,6C,6C,6F

这向我表明我的重定向代码都工作正常; 当我在PowerShell中使用Write-Host时,得到的是预期的UTF-8。

这意味着PowerShell的Write-HostWrite-Output命令必须对输出做一些不同的事情,而不是简单地调用[Console]::WriteLine

更新2

我什至尝试了以下方法来将PowerShell控制台代码页强制为UTF-8,但是Write-HostWrite-OutputWrite-Output[Console]::WriteLine工作时仍会产生损坏的结果。

$sig = @'
[DllImport("kernel32.dll")]
public static extern bool SetConsoleCP(uint wCodePageID);

[DllImport("kernel32.dll")]
public static extern bool SetConsoleOutputCP(uint wCodePageID);
'@

$type = Add-Type -MemberDefinition $sig -Name Win32Utils -Namespace Foo -PassThru

$type::SetConsoleCP(65001)
$type::SetConsoleOutputCP(65001)

Write-Host "Héllo!"

& chcp    # Tells us 65001 (UTF-8) is being used
trans by 2020-07-23T17:44:57Z

java-为什么Eclipse使用Cp1252编码?

抱歉,这是一个非常业余的问题! 我知道Eclipse使用Cp1252作为其编码的默认值。
我最近创建了一个使用哈希映射将输入的字母转换为盲文的程序。 为此,我不得不将编码方法更改为UTF-8。

我对这两者都不了解,但是我读到的所有内容都表明UTF-8可以表示Unicode中的每个字符,并且具有更大的可识别符号库。

那么为什么它不是Eclipse的首选编码样式?

trans by 2020-07-22T23:16:55Z

asp.net mvc-如何在C#中使用UTF8编码与BOM一起在C#中获取GetBytes()?

我在C#的asp.net mvc 2应用程序中使用UTF8编码时遇到问题。 我正在尝试让用户从字符串中下载一个简单的文本文件。 我正在尝试使用以下行获取字节数组:

return File(x, ..., ...);

但是当我使用以下命令将其退回下载时:

return File(x, ..., ...);

我得到的文件没有BOM,所以我无法正确显示克罗地亚字符。 这是因为我的字节数组在编码后不包含BOM。 我尝试手动插入这些字节,然后正确显示,但这不是最好的方法。

我还尝试创建UTF8Encoding类实例,并将布尔值(true)传递给其构造函数以包含BOM,但是它也不起作用。

有人有解决方案吗? 谢谢!

trans by 2020-07-21T15:04:56Z

utf 8-保存用VBA编码的文本文件UTF-8

我怎样才能从VBA将UTF-8编码的字符串写入文本文件,例如

Dim fnum As Integer
fnum = FreeFile
Open "myfile.txt" For Output As fnum
Print #fnum, "special characters: äöüß" 'latin-1 or something by default
Close fnum

在应用程序级别上有设置吗?

trans by 2020-07-19T12:42:52Z

utf 8-git,msysgit,重音符号,utf-8,最终答案

我在某些地方读到git(或msysgit?)和字符编码存在问题-我相信这只是文件名中的问题。

我想要的是一些有关以下方面的“权威”(或至少权威)信息:

  1. “问题”到底是什么? (症状)
  2. 原因是什么? (简短地)
  3. 在什么情况下,这是表演的制止器?
  4. 是否有任何解决方案,或者没有解决方法?

我希望这个问题不要太含糊,我认为将所有这些信息集中在一个地方以便能够向人们指出是个好习惯。

trans by 2020-07-19T02:26:14Z

1 2 3 4 5 6 7 8 9 下一页 共9页