对于具有使用Cp1252编码的旧遗留代码的项目,我需要使用eclipse而不是UTF-8(我通常将其用于所有项目)来使用此编码。如果在Eclipse中使用UTF-8作为编码时编译该项目,则在运行时会出现问题,因为UI中的特殊字符无法正确显示。目前,重新编码所有源代码文件尚不可接受,并且不适合我。
因此,我转到了“窗口”->“设置”->“工作区”,并将“文本编码”设置更改为“默认:Cp1252”。当我在那之后编译时,一切都完美无瑕。到目前为止,一切都很好。
但是,在每次重新启动Eclipse之后,Eclipse会将设置更改回“ Other:UTF-8”。我已经做了很多尝试来弄清楚为什么Eclipse会这样做,而我却空洞了。
甚至在完全全新安装Eclipse(即仅将文件解压缩到我的硬盘驱动器上的空文件夹中)和新创建的空工作区时,也会发生这种情况。我从字面上开始了Eclipse的全新安装,创建了一个新的工作区,Text Encoding的设置为“ Other:UTF-8”。我将其更改为“默认:Cp1252”,关闭了Eclipse,再次启动它,然后将其再次设置为“其他:UTF-8”。我还尝试将其设置为“其他:Cp1252”,但这没有任何改变-它仍会重置为“其他:UTF-8”。
我猜必须要从某个地方读取系统范围的设置,但是我什至不知道要寻找什么。
另外,仅将项目的编码更改为Cp1252也无济于事,因为我仍然遇到特殊字符的问题-显然,我需要更改整个工作区范围的设置才能使其正常工作。
我完全迷失了这一点。谁能帮我?
我无法使用WebClient,在任何人建议之前,因为它使我的合法应用程序看起来像迈克菲病毒.所以请不要这么做.
我有一个存储在我的服务器上的binary.txt文件.它大约是1,240kb.但是,HttpWebRequest下载的随机数量从1,300kb到1,700kb.
HttpWebRequest httpRequest = (HttpWebRequest)
WebRequest.Create("http://deviantsmc.com/binary.txt");
httpRequest.Method = WebRequestMethods.Http.Get;
HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
Stream httpResponseStream = httpResponse.GetResponseStream();
byte[] buffer = new byte[1240];
int bytesRead = 0;
StringBuilder sb = new StringBuilder();
//FileStream fileStream = File.Create(@"tcontent.txt");
while ((bytesRead = httpResponseStream.Read(buffer, 0, 1240)) != 0)
{
sb.Append(Encoding.ASCII.GetString(buffer));
//fileStream.Write(buffer, 0, bytesRead);
}
File.WriteAllText(@"tcontent1.txt", sb.ToString());
Run Code Online (Sandbox Code Playgroud)
(服务器上的binary.txt文件的内容是ASCII,因此我也将Encoding字符串转换为ASCII).
这是我编码该文本文件的方式(在该服务器上)
我的文件基本上是这样的:
byte[] bytes = File.ReadAllBytes("binary.txt");
String encBytes = Encoding.ASCII.GetString(bytes);
File.WriteAllText(file("binary.txt"), encBytes);
Run Code Online (Sandbox Code Playgroud)
我联系了AV公司关于WebDownloader被视为C#中的一些恶意导入,但他们没有回复我,所以我被迫使用HttpWebRequest.
我正在解析CSV如下:
with open(args.csv, 'rU') as csvfile:
try:
reader = csv.DictReader(csvfile, dialect=csv.QUOTE_NONE)
for row in reader:
...
Run Code Online (Sandbox Code Playgroud)
args.csv我的文件名称在哪里.我文件中的一行是一个顶部有两个点的e.遇到这个时我的脚本会中断.
我得到以下堆栈跟踪:
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 244, in dumps
return _default_encoder.encode(obj)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
Run Code Online (Sandbox Code Playgroud)
并出现以下错误:
UnicodeDecodeError: 'utf8' codec can't decode byte 0x91 in position 5: invalid start byte
Run Code Online (Sandbox Code Playgroud)
FWIW,我正在运行Python 2.7并且升级不是一个选项(出于几个原因).
我很失落如何解决这个问题所以非常感谢任何帮助.
谢谢!
如果Java中的字符串是UTF-16,那么UTF-16字符的大小可能是4个字节.因此,1个UTF-16角色必须映射到2个字符.
这意味着String长度可能小于等效的char []长度.
但事实并非如此.
Character x = new Character((char) 7000);
String s = new String(""+x+x+x);
byte [] ar = s.getBytes();
char [] arr = s.toCharArray();
Run Code Online (Sandbox Code Playgroud)
字节数组的长度为9.
字符数组的长度为3.
所以char的大小如何为2字节?
所以我认为java中的char可能大于2个字节,具体取决于需要是否正确.
如果是这样,java中char的最大大小是多少?或者它是可变长度,将来可能会达到无穷大?
我已将应用程序从D2007升级到XE6.它将数据发布到网络服务器.
我无法确定哪些编码将正确发送左右引号字符(下面的代码片段).我已经尝试了我能找到的每个选项,但是它们?在发送时被编码(就我在WireShark中看到的那样).
D2007没有问题,但XE6完全是关于Unicode的,我不确定问题是编码还是代码页或什么.
Params := TIdMultipartFormDataStream.Create;
params.AddFormField('TEST', 'Test ‘n’ Try', 'utf8').ContentTransfer := '8bit';
IdHTTP1.Request.ContentType := 'text/plain';
IdHTTP1.Request.Charset := 'utf-8';
IdHTTP1.Post('http://test.com.au/TestEncoding.php', Params, Stream);
Run Code Online (Sandbox Code Playgroud) \u2264 这是字符(小于或等于),这是错误的根本原因。详细错误日志:
Traceback (most recent call last):
File "C:\Dev\EXE\TEMP\cookie\crumbs\views.py", line 1520, in parser
html_file.write(html_text)
File "C:\Users\Cookie1\AppData\Local\Programs\Python\Python36-32\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2264' in position 389078: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud) 所以我最近在玩,并试图生成一个1GB的文件.
StreamWriter writer = new StreamWriter(@"C:\Users\parsonsj\Desktop\data.dat");
Encoding utf8enc = UTF8Encoding.UTF8;
for (int i = 0; i < 1073741824; i++) {
writer.Write(utf8enc.GetBytes("#"));
}
writer.Close();
Run Code Online (Sandbox Code Playgroud)
我的想法是,因为UTF8字符是1字节而1GB是大约1,073,741,824字节,所以写入单个UTF8字符1,073,741,824次将导致大约1GB的文件大小.
我运行了我的小程序,正如预期的那样,它开始放慢速度并减少记忆.我最终过早杀了它,然后检查文件大小,好奇我有多远.令我惊恐的是,该文件高达13GB.
我不确定它是如何变大的.也许我编码错了.也许存在某种与内存泄漏相关的疯狂错误.我只是困惑.
为什么我的文件太大了?我误解了编码或数学吗?
我在hexdump代码中有一些数据.左手是DEC,右手是hexdump代码.
16 = 10
51 = 33
164 = A4 01
388 = 84 03
570 = BA 04
657 = 91 05
1025 = 81 08
246172 = 9C 83 0F
Run Code Online (Sandbox Code Playgroud)
如何计算到DEC的任何hexdump?在perl中,我尝试使用ord()命令但不起作用.
更新 我不知道它叫什么.它看起来像7bits数据.我尝试在excel中构建公式,如下所示:
DEC = hex2dec(X) + (128^1 * hex2dec(Y-1)) + (128^2 * hex2dec(Z-1)) + ...
Run Code Online (Sandbox Code Playgroud) 在Go中,如果我从字符串-> [] byte转换,或者相反,从[] byte->字符串转换,数据是否可能会损坏。例如,假设我已定义:
fooBytes := []byte(fooString)
fooConvertedBack := string(fooBytes
fooBytesConvertedBack := []byte(fooConvertedBack)
Run Code Online (Sandbox Code Playgroud)
然后我们可以得到数据损坏的情况:
fooString != fooConvertedBack
fooBytes != fooBytesConvertedBack
Run Code Online (Sandbox Code Playgroud)
我猜这里的答案是否定的。我正在使用字节的随机数组,因此我想确保不会破坏数据,因为例如golang字符串具有默认字符集,该字符集不允许完全随机的字节。
base64编码字节更好吗?
By default, my Spring Boot application responds to any request with the following Content-Type headers:
Content-Type: text/html;charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
I believe this has been so from the beginning and I would like to keep it this way.
However, by making a simple change and only adding @EnableWebMvc to my @SpringBootApplication annotated class, the charset attribute is changed:
Content-Type: text/html;charset=ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
And so the UTF-8 encoded content of the response is displayed incorrectly on the website.
spring spring-mvc character-encoding http-headers spring-boot
utf-8 ×3
c# ×2
encoding ×2
java ×2
python ×2
char ×1
csv ×1
decode ×1
delphi ×1
django ×1
eclipse ×1
go ×1
hexdump ×1
http-headers ×1
http-post ×1
perl ×1
python-2.x ×1
python-3.x ×1
slice ×1
spring ×1
spring-boot ×1
spring-mvc ×1
streamwriter ×1
string ×1
unicode ×1
utf ×1
utf-16 ×1