gpt4 book ai didi

javascript - 有没有办法在字符串中使用非八进制文字?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:19:41 24 4
gpt4 key购买 nike

我必须过滤掉表单中的字符。因此,我实现了一个过滤算法,它运行良好,并根据不同的上下文使用不同的过滤器(变量);我也必须大量使用重音字母。

例子:

gFilterALPHA1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'-–àâäéèêëîïôöùüûÀÂÄÉÈÊËÎIÔÖÙÛÜæÆœŒçÇ ";

奇怪的是,字母 é(e 锐音符)或 è(e 重音)被考虑在内(这样看),而其他字母,如 à (一个坟墓)不是。我发现解决方案是使用八进制乱码——例如 \340\371 分别代表坟墓或你的坟墓。

Q1。关于为什么 é (e acute) 被直接成功解析而其他重音字母却没有的任何线索?

Q2。由于在想要检查或添加值时编写一长串八进制文字既麻烦又容易出错,有没有人有更好的主意或知道解决方法?

谢谢。

好的,这是 thg435 认为有用的代码,请看一下。

function jFiltre_Champ(event, NomDuFiltre)
{
var LeChamp=event.target.value; // value est de type ARRAY
switch (NomDuFiltre)
{
case "NUM1":
LeFiltre=gFiltreNUM1;
Msg=gMessageNUM1;
break;
case "ALPHA1":
LeFiltre=gFiltreALPHA1;
Msg=gMessageALPHA1;
break;
case "DATE1":
LeFiltre=gFiltreDATE1;
Msg=gMessageDATE1;
break;
case "ALPHANUM1":
LeFiltre=gFiltreALPHANUM1;
Msg=gMessageALPHANUM1;
break;
case "ALPHANUM2":
LeFiltre=gFiltreALPHANUM2;
Msg=gMessageALPHANUM2;
break;
}
Longueur=LeFiltre.length;
for (i=0; i<LeChamp.length; i++)
{
leCar = LeChamp.charAt(i);
for (j = 0; j < Longueur; j++)
{
if (leCar==LeFiltre.charAt(j)) break;
}
if (j==Longueur)
{
alert(Msg);
/*Cf doc. pour l'algorithme de la méthode slice*/
document.getElementById(event.target.id).value=event.target.value.slice("0", i);
break;
}
}

这是一个英文版本:(关于(2))

function jform_input_filter(event, filterName)
{
var current_input = event.target.value; // the value is an array
switch (filterName)
{
case "NUM1":
current_filter = gFilterNUM1;
Msg = gMessageNUM1;
break;
case "ALPHA1":
current_filter = gFilterALPHA1;
Msg = gMessageALPHA1;
break;
case "DATE1":
current_filter = gFilterDATE1;
Msg = gMessageDATE1;
break;
case "ALPHANUM1":
current_filter = gFilterALPHANUM1;
Msg = gMessageALPHANUM1;
break;
case "ALPHANUM2":
current_filter = gFilterALPHANUM2;
Msg = gMessageALPHANUM2;
break;
}
length = current_filter.length;
for (i = 0; i < current_input.length; i++)
{
leCar = current_input.charAt(i);
for (j = 0; j < length; j++)
{
if (leCar==current_filter.charAt(j)) break;
}
if (j == length)
{
alert(Msg);
/*Cf doc. pour l'algorithme de la méthode slice*/
document.getElementById(event.target.id).value=event.target.value.slice("0", i);
break;
}
}

评论:

  1. 我个人认为这段代码对回答原始问题没有用;
  2. 变量和注释是法语的,这可能会使某些人难以阅读——对此感到抱歉;
  3. 此函数与 HTML 表单中的“onchange”事件相关联;
  4. “g”变量(例如 gFiltreALPHANUM2)是在同一 .js 文件的其他地方定义的广义向量,以便函数可以访问它们。

最佳答案

Bergi 可能是对的:您的文件可能以错误的编码保存或传送。将 UTF-8 视为对 Unicode 字符集支持良好的编码。为了测试这个想法,您可以临时调整您的脚本以将带有重音符的 a-with-acute-accent 输出到页面中,无论是在字段中还是作为文本节点。在字符串文字中使用逐字字符,而不是其八进制转义码。如果它出现乱码,则说明该字符没有以其原始形式进入浏览器,并且您遇到了编码问题。

如果编码问题得到确认,您需要正确保存您的文件,或者调整响应字符编码,这取决于您的特定网络服务器。您可以使用 Fiddler 找到 Web 服务器提供的当前编码。并检查 Content-Type 响应 header 。如果 Web 服务器已经认为您的文件采用了正确的编码(最好是,如前所述,UTF-8),那么请检查您的文本编辑器以确保它以相同的精确编码保存 JavaScript 文件。

我写这个作为答案是因为我认为我不能直接评论这个问题。

关于javascript - 有没有办法在字符串中使用非八进制文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14018065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com