我需要在80%确定文件是二进制文件还是文本文件,有没有办法在c#中快速,脏/丑?
我正在使用ASP.NET MVC,MS SQL和IIS.我有一些用户在他们的个人资料信息中使用了中文字符.但是,当我显示此信息时显示为,æŽå¼·è¯但它们在我的数据库中是正确的.目前我的HTML页面的UTF设置为UTF-8.我应该把它改成UTF-16吗?我知道有一些问题可以来自于此,但我的选择是什么?
谢谢,
亚伦
我正在尝试找到一种在Javascript中压缩/解压缩字符串的方法.通过压缩我的意思是使字符串看起来更短(更少char).那是我的目标.
以下是事情应该如何运作的一个例子:
// The string that I want to make shorter
// It will only contain [a-zA-Z0-9] chars and some ponctuations like ()[]{}.,;'"!
var string = "I like bananas !";
// The compressed string, maybe something like "????",
// which is shorter than the original
var shortString = compress(string);
// The original string, "I like banana !"
var originalString = decompress(shortString);
Run Code Online (Sandbox Code Playgroud)
这是我的第一个想法(也许有更好的方法来达到我的目标,如果是这样,我对它感兴趣).
我知道我的原始字符串将是utf-8.所以我正在考虑使用utf-32进行编码,它应该将字符串的长度除以4.
但我不知道如何使用不同的编码来构造这两个函数来构造新的字符串.这是我到目前为止的代码不起作用......
function compress(string) {
string = unescape(encodeURIComponent(string));
var newString = '';
for (var i = 0; i …Run Code Online (Sandbox Code Playgroud) 在我正在编写的SSIS程序包中,我有一个CSV文件作为源。在“连接管理器”的“常规”页面上,它具有65001“代码”页面(我正在测试某些东西)。不检查Unicode。
这些列与varchar其他列一起映射到SQL Server目标表。
目的地出现错误:无法处理“ columnname”列,因为为其指定了多个代码页(65001和1252)。
我的SQL列必须为varchar,而不是nvarchar因为其他使用它的应用程序。
然后,在“连接管理器”的“常规”页面上1252 (ANSI - Latin I),将“代码”页面更改为,然后单击“确定”,但是当我再次打开它时,它又回到了65001。是否(仅出于测试目的)我是否检查Unicode都没有影响。
需要注意的是,所有这一切都是在CSV文件和SQL表添加和删除了列(用户知道)之后开始发生的。在此之前,我没有任何问题。是的,我在“高级编辑器”中刷新了OLE DB目标。
这是SQL Server 2012,并且随BIDS和SSIS一起提供。
可能重复:
UTF8,UTF16和UTF32
我总是在阅读以UTF-8编写我的源代码并与其他编码保持一致的事情,但似乎UTF-16也是UTF-8的改进版本.他们之间有什么区别,这两者之间有什么优势吗?
我正在尝试优化 3GB CSV 文件的 MySQL 表结构。到目前为止,我已经成功导入了 1900 万行以上的 60%,MySQL 表大小为 5.5GB。如何优化表结构以减少数据库表的大小?(因为我的磁盘空间不足!)
CSV 文件中的示例行是
"{0C7ADEF5-878D-4066-B785-0000003ED74A}","163000","2003-02-21 00:00","UB5 4PJ","T","N","F","106","","READING ROAD","NORTHOLT","NORTHOLT","EALING","GREATER LONDON","A"
Run Code Online (Sandbox Code Playgroud)
...我的数据库结构是:
(
`transaction_id` int(10) unsigned NOT NULL,
`reference` varchar(100) COLLATE utf32_unicode_ci NOT NULL,
`price` int(10) unsigned NOT NULL,
`sale_date` date COLLATE utf32_unicode_ci NOT NULL,
`postcode` varchar(8) COLLATE utf32_unicode_ci NOT NULL,
`type` varchar(1) COLLATE utf32_unicode_ci NOT NULL,
`new_build` varchar(1) COLLATE utf32_unicode_ci NOT NULL,
`tenure` varchar(1) COLLATE utf32_unicode_ci NOT NULL,
`property_number` varchar(10) COLLATE utf32_unicode_ci NOT NULL,
`property_name` varchar(100) COLLATE utf32_unicode_ci NOT NULL,
`street` varchar(100) …Run Code Online (Sandbox Code Playgroud) 我有一个varchar名为列的表birthday
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`birthday` varchar(30) COLLATE utf16_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf16 COLLATE=utf16_unicode_ci AUTO_INCREMENT=5 ;
INSERT INTO `test` (`id`, `birthday`)
VALUES (1, '20041225'),
(2, '2004-12-25'),
(3, '19941225'),
(4, '19941201');
Run Code Online (Sandbox Code Playgroud)
我尝试运行此查询:
SELECT str_to_date(birthday,"%Y%m%d")
FROM `test`
WHERE 1
Run Code Online (Sandbox Code Playgroud)
但它总是返回具有空值的行.
如果我运行查询:
SELECT str_to_date('20141225',"%Y%m%d")
FROM `test`
WHERE 1
Run Code Online (Sandbox Code Playgroud)
它会回来 2014-12-25
那我的查询有什么问题?
我刚刚学习了 python 中的字符串编码,在稍微摆弄了一下之后,我对空字符串 ('') 的大小在 utf 8 和 ascii 中为 0 但在 utf 16 中为 2 感到困惑?怎么会?
print(len(''.encode('utf16'))) # is 2
print(len(''.encode('utf8'))) # is 0
Run Code Online (Sandbox Code Playgroud)
我想问题的很大一部分是我不明白 utf 16 是如何工作的。我不明白为什么用 utf 16 编码“垃圾邮件”会是 10 个字节长,而不是 8 个字节(每个字符 2 个字节(16 位))。我假设 utf 16 中需要 2 个字节作为任何字符串的默认填充或其他内容?
*编辑
我对 UTF 8 或 UTF 16 的工作原理以及存储每个单独字符的不同之处并不感到困惑。我很困惑如何将缺少任何字符(空字符串)存储在 UTF 16 中的 2 个字节中,但在 UTF 8 中存储为 0 字节。(而不是两者都存储为 1 字节或 0)
该链接没有提供我的问题的答案。
编码平台:使用C#的ASP.NET WebForms 4.0
背景:我正在从XML中读取一些值,一切都在我的语言环境中工作(en-US).XML看起来像这样
<?xml version="1.0" encoding="utf-32" ?>
<settings>
<UserRegistration>AutoAuthorize</UserRegistration>
<OpenIDProfile>PromptUser</OpenIDProfile>
<EnableSpamProtection>Yes</EnableSpamProtection>
<MaxAllowedOpenID>2</MaxAllowedOpenID>
<WebsiteURL>http://localhost:70707/blah/</WebsiteURL>
<FacebookOAuthURL>https://graph.facebook.com/oauth/authorize?</FacebookOAuthURL>
<FacebookAccessTokenURL>https://graph.facebook.com/oauth/access_token?</FacebookAccessTokenURL>
<FacebookRedirectPage>ausgefüllt.aspx</FacebookRedirectPage>
<FacebookAppID>192328104139846</FacebookAppID>
<FacebookAppKey>29daeb58d8ae84cc22181f4073e4ed9d</FacebookAppKey>
<FacebookAppSecret>b94e9ddd20efc47b3227e7333925fdd8</FacebookAppSecret>
<FacebookScope>email</FacebookScope>
<EmailSettingsDisplayName>admin</EmailSettingsDisplayName>
<EmailSettingsEmail>blah@blah.com</EmailSettingsEmail>
<EmailSettingsPassword>192185135098207157230060249027191124199097098215</EmailSettingsPassword>
</settings>
Run Code Online (Sandbox Code Playgroud)
问题
我把整个东西都包裹在我的客户端进行测试.测试环境是
服务器:Windows Server 2008 R2 64位
区域设置:德语(de-DE)
而现在,当我尝试读取XML时,Elmah会抛出两个错误错误.第一个错误是
System.Xml.XmlException:'',十六进制值0xA000D,是无效字符.第1行,位于System.Xml.XmlTextReaderImpl.Throw(String res,String [] args)的System.Xml.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace(),位于System.Xml.Linq的System.Xml.XmlTextReaderImpl.ParseDocumentContent()处. System.Xml.Linq.XDocument.Load(String uri,LoadOptions选项)中的XDocument.Load(XmlReader reader,LoadOptions选项)位于c:\ Webs\ThirdPartyLogins\Administrator\SiteSettings中的Administrator_SiteSettings.SaveSettingsButton_Click(Object sender,EventArgs e). aspx.cs:第48行
我将这些XML节点值带到一个字典,然后出现此错误,字典中找不到键错误.
编码的罪魁祸首?
我的代码可能有什么问题?
1)在将编码更改为utf-16时,出现了新的错误
在utf-16中,它的System.Xml.XmlException:'.',十六进制值0x00,是一个无效字符.第1行,第39位.
2)之前粘贴的XML不完整.它有一些节点,一些URL作为节点数据.这会是一个问题吗?还更新了XML.
encoding ×4
utf-8 ×4
utf-16 ×3
c# ×2
csv ×2
html ×2
mysql ×2
asp.net ×1
binary ×1
compression ×1
etl ×1
file-io ×1
filesize ×1
javascript ×1
python ×1
python-3.x ×1
sql ×1
sql-server ×1
ssis ×1
str-to-date ×1
string ×1
text ×1
utf ×1
webforms ×1
xml ×1