- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
以下是示例用户代理列表,这些用户代理在国家/语言代码部分之前指定了这些神秘的 3 个字符。
ES(西类牙) http://www.webuseragents.com/ua/643853/opera-9-80-j2me-midp-opera-mini-4-2-14912-25-729-u-es-presto-2-5-25-version-10-54 http://www.webuseragents.com/ua/884994/opera-9-80-j2me-midp-opera-mini-4-2-14912-29-3134-u-es-presto-2-8-119-version-11-10
PT http://www.webuseragents.com/ua/874562/opera-9-80-j2me-midp-opera-mini-4-2-14912-28-4150-u-pt-presto-2-8-119-version-11-10 http://www.webuseragents.com/ua/961801/opera-9-80-j2me-midp-opera-mini-4-2-14912-30-3389-u-pt-presto-2-8-119-version-11-10 http://www.webuseragents.com/ua/1029731/opera-9-80-j2me-midp-opera-mini-4-2-14912-32-952-u-pt-presto-2-8-119-version-11-10
ZH(英语) http://www.webuseragents.com/ua/911065/opera-9-80-j2me-midp-opera-mini-4-2-14912-29-3417-u-en-presto-2-8-119-version-11-10 http://www.webuseragents.com/ua/954938/opera-9-80-j2me-midp-opera-mini-4-2-14912-30-3341-u-en-presto-2-8-119-version-11-10
还有更多,但我已经把它留在那里了,在每个用户代理中,无法识别的字符总是相同的(即):“”,它将显示为Vi 或ï» ¿PT 或es 或en。
现在,它可能看起来像一个外来词或代码,但它不应该是。由于 Microsoft 列出了所有可能的用户代理国家(地区)与语言(区域设置)引用,并且使用普通字符 (a-z),很少使用数字 (0-9) 和破折号(连字符)和下划线。无非是用来形容数百个地区和数百种方言(语言)。因此,可以使用 ISO 639 标准描述这些地区和这些地区使用的语言的整个组合,该标准仅使用介于 a 到 z 之间的字符。
Microsoft 的官方列表在这里,虽然很全面,但并未涵盖所有内容,但接近于此:http://msdn.microsoft.com/en-us/library/cc233968.aspx
因此,我通过使用 Visual Studio 2012 和方便的 Asc() 函数将符号转换为相关字符代码来检查这 3 个字符,结果如下:
ï = character 239
» = character 187
¿ = character 191
现在,我真正需要知道的是像这样的用户代理是否是合法的 UA。我需要把它们扔进垃圾桶,还是照原样传递(不是为了任何特定目的,只是一般而言)。有谁知道这种奇怪的事情或它为什么存在,它代表什么或其他什么?用户代理规范特殊字符部分(在 ISO 中)没有提及这一点。
假设地说,如果我要编写一个程序来分析用户代理并向用户返回其合法性,那么带有  字符的用户代理会指示我返回什么?用户代理是合法的 (True) 还是不合法的 (False)...?
更新/添加:
我发现另一个有类似问题的User Agent,它显示如下(JUC之后的通知部分):
JUC (DÌFH©3;U; 2.3.5; zh-cn; HTC_Explorer_A310e; 320*480)
但是,在我的文本流中,我看到它是“D?FH?3
”,所以我用这些问号替换了原来的奇怪字符。
我正在使用 System.Net.WebClient 的 .DownloadData 子例程来获取此数据,我猜这就是转换发生的地方(除非 LINK To Entity 正在这样做,因为我正在存储它的数据库字段类型输入是 nvarchar(MAX)
)。
我该怎么办?我应该以原始形式获取此数据并“按原样”传递,还是应该排除所有带有奇怪字符的项目?
我的意思是,例如,DÌFH©3 是否代表在中国制造和使用的真实产品名称?关于我应该去哪个方向有什么想法吗?
非常感谢大家的阅读和任何预期的回复。
最佳答案
网站假设此用户代理字符串编码为 ISO-8859-1,但实际上是 UTF-8。
您看到的是 Unicode 代码点 U+FEFF(又名“BYTE ORDER MARK”)。当以 UTF-8 编码时,它由三个字节 0xEF、0xBB、0xBF 组成。当您假设这三个字节实际上是 ISO-8859-1 时,您会将它们编码为 
。
字节顺序标记总是可以安全地从 UTF-8 字符串中剥离。对于其他编码方案(UCS-2、UTF-16 等),它可能是对解码器有用的提示,但同样,它没有其他目的或意义。
当您直接处理 UA 字符串时,最好的办法可能是尝试将其解码为 UTF-8,并将不在字母、数字、标记或符号类别中的所有内容解释为空格。
关于c# - 用户代理字符串中无法识别的字符 ("")?该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20060015/
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!