我正在尝试转换一些法语加拿大语的字符串,基本上,我希望能够在保留字母的同时取出字母中的法语重音符号.(例如转换é为e,所以crème brûlée会变成creme brulee)
实现这一目标的最佳方法是什么?
什么是完整的正则表达式或其他一些可以获得标题的过程:
如何将标题更改为Stack Overflow等URL的一部分?
把它变成
how-do-you-change-a-title-to-be-part-of-the-url-like-stack-overflow
Run Code Online (Sandbox Code Playgroud)
Stack Overflow上的SEO友好URL中使用了哪些?
我使用的开发环境是Ruby on Rails,但是如果还有其他一些特定于平台的解决方案(.NET,PHP,Django),我也很乐意看到它们.
我相信我(或其他读者)会在不同的平台上遇到同样的问题.
我正在使用自定义路由,我主要想知道如何更改字符串以删除所有特殊字符,它全部小写,并且所有空格都被替换.
我想自动转换 UTF-8 字符â Ù á ? ?,a U a C G以便它们在 URL 中是可以接受的。
到目前为止,我有这个:
Encoding sourceEncoding = Encoding.GetEncoding(28591); // ISO-8859-1
byte[] asciiBytes = Encoding.Convert(sourceEncoding, Encoding.ASCII, sourceEncoding.GetBytes(<source text>));
String asciiString = Encoding.UTF8.GetString(asciiBytes);
Run Code Online (Sandbox Code Playgroud)
这种方法有两个问题:
有什么想法可以让我完成这项工作吗?
需要将SQL nchar的.NET转换/转换为char.
更具体地说,将nchar UNICODE强制转换为char ASCII.
这很复杂的是SQL char使用完整的字节.
不是128的纯ASCII
.TSQL函数ASCII返回0-255.
理想情况下,FormByte会有一个NormalizationForm.
它不是一个确切的文本值 - 而是一个接近的逻辑值或?.
SQL会使用FormByte从nchar转换为char.
NormalizationForm
编码解码对我来说不起作用,我尝试了各种口味.
在SQL中,许多char(字节)映射到63. 63是?
不只是255以上的char映射到63.
130到140都映射到63.
角色160-255全部返回160-255
超过255并不是全部都映射到63.
例如,许多变音符号被映射到ASCII.
TSQL具有UNICODE和ACSII功能.
所以我只是将所有Unicode字符加载到char和nchar列中.
SQL返回的char对于29个字符是错误的.
并且为坏字符返回的ASCII()没有意义 - 所有控制字符在130-160范围内.
检查二进制文件中是否存在错误的29,存储的内容是ASCII()返回的内容.
对于27,从char返回的是nchar和2,它甚至不是正确的nchar.它们都应映射到?或ACSII等价物.
"和"映射到"(但将采取?)"和"映射到"
- (简称)和 - (em破折号)映射到 -
...
我知道你不相信我.
将'Œ'插入char列并选择它 - 它将返回'Œ'.
你甚至可以搜索它 - char ='Œ'返回true.
选择ASCII('Œ')返回140,这是实际存储的内容(检查二进制).
UNICODE对140/8C的定义是偏序线.
我检查了该char的二进制值,它是8C(140).
返回的是unicode'Œ'Int16338.
看起来SQL正在做一些输入输出映射并弄错了.
ASCII函数对于未映射到?的575个unicode字符是否正确.
char值与ACSII匹配,它们都有意义.
EG 12种不同形式的u都映射到u.
除了32163个字符?被映射到?(63).
下面是返回错误值的29个字符.
列顺序:
char
nchar
ASCII(char)
UNICODE(nchar)
sqlCharASCIIbackToString did not match Œ Œ 140 338
sqlCharASCIIbackToString did not match œ œ 156 339
sqlCharASCIIbackToString did …Run Code Online (Sandbox Code Playgroud) 我正在c#中制作一个Vigenere密码程序,但是我遇到了一个问题,我没有"Ñ"我想要像Vigenere密码那样加密但是用"Ñ"如何添加字母"Ñ "这个代码?这样,密钥和s都保持这种方式:a = 0 b = 1 ... n =13ñ= 14 ... z = 26之后的地方飞行
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void VigenereEncrypt(ref StringBuilder s, string key)
{
for (int i = 0; i < s.Length; i++) s[i] = Char.ToUpper(s[i]);
key = key.ToUpper();
int j = 0;
for (int i = 0; i < s.Length; i++)
{
if (Char.IsLetter(s[i]))
{
s[i] = (char)(s[i] + key[j] - 'A');
if (s[i] > 'Z') …Run Code Online (Sandbox Code Playgroud) .net ×3
c# ×2
asp.net ×1
diacritics ×1
dotnetnuke ×1
friendly-url ×1
regex ×1
seo ×1
slug ×1
sql-server ×1
string ×1
t-sql ×1
unicode ×1
vigenere ×1