- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是我的环境:客户端 -> iOS 应用程序,服务器 ->PHP 和 MySQL。
从客户端到服务器的数据是通过 HTTP POST 完成的。
从服务器到客户端的数据是用json完成的。
我想添加对表情符号或一般任何 utf8mb4 字符的支持。我正在寻找在我的情况下处理此问题的正确方法。
我的问题如下:
POST 是否允许 utf8mb4,或者我应该将客户端中的数据转换为纯 utf8?
如果我的数据库有排序规则和字符集 utf8mb4,这是否意味着我应该能够存储“原始”表情符号?
我应该尝试使用 utf8mb4 在数据库中工作,还是在 utf8 中工作和编码符号更安全/更好/更受支持?如果是这样,我应该使用哪种编码方法才能在 Objective-C 和 PHP(以及 future android 版本的 java)中完美运行?
现在我有带 utf8mb4 的数据库,但在尝试存储原始表情符号时出现错误。另一方面,我可以存储非 utf8 符号,例如 ¿
或 á
。
当我在 PHP 中检索此符号时,我首先需要执行 SET CHARACTER SET utf8
(如果我在 utf8mb4 中获取它们,则 json_decode
函数不起作用),然后这样的符号被编码(例如,¿
被编码为 \u00bf
)。
最佳答案
MySQL 的utf8
字符集实际上不是UTF-8,它是UTF-8 的一个子集,只支持基本平面(字符最多为U+FFFF)。大多数表情符号使用高于 U+FFFF 的代码点。 MySQL 的 utf8mb4
是实际的 UTF-8,它可以对所有这些代码点进行编码。在 MySQL 之外,没有“utf8mb4”之类的东西,只有 UTF-8。所以:
Does POST allow utf8mb4, or should I convert the data in the client to plain utf8?
同样,没有“utf8mb4”这样的东西。 HTTP POST 请求支持任何原始字节,如果您的客户端发送 UTF-8 编码数据就没问题。
If my DB has collation and character set utf8mb4, does it mean I should be able to store 'raw' emojis?
是的。
Should I try to work in the DB with utf8mb4 or is it safer/better/more supported to work in utf8 and encode symbols?
上帝啊,不,对所有神圣的东西都使用原始 UTF-8 (utf8mb4
)。
When I retrieve this symbols in PHP I first need to execute
SET CHARACTER SET utf8
好吧,这就是你的问题;通过 MySQL 的 utf8
字符集传输数据将丢弃 U+FFFF 以上的任何字符。通过 MySQL 一直使用 utf8mb4
。
if I get them in utf8mb4 the json_decode function doesn't work
您必须明确说明它的确切含义。 PHP 的 JSON 函数应该能够很好地处理任何 Unicode 代码点,只要它是有效的 UTF-8:
echo json_encode('😀');
"\ud83d\ude00"
echo json_decode('"\ud83d\ude00"');
😀
关于php - 终极表情符号编码方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34637105/
我对自定义 CSS 或在将图像作为 Logo 上传到页面时使用编码 block 有疑问。我正在为我的网站使用 squarespace,我需要帮助编码我的 Logo 以使其适合每个页面。一个选项是使用自
如 encoding/json 包文档中所述, Marshal traverses the value v recursively. If an encountered value implement
我必须做一些相当于Java中的iconv -f utf8 -t sjisMS $INPUT_FILE的事情。该命令在 Unix 中 我在java中没有找到任何带有sjisMS的编码。 Java中有Sh
从 PHP 5.3 迁移到 PHP 5.6 后,我遇到了编码问题。我的 MySQL 数据库是 latin1,我的 PHP 文件是 windows-1251。现在一切都显示为“ñëåäíèòå àäðå
我有一个 RScript文件(我们称之为 main.r ),它引用了另一个文件,使用以下代码: source("functions.R") 但是,当我运行 RScript 文件时,它提示以下错误:
我无法设法从 WSDL 创建 RPC/编码风格的代码 - 有谁知道哪个框架可以做到这一点? 带有 adb 和 xmlbeans 映射的 Axis2 无法正常工作(无法处理响应中的肥皂编码)直接使用 X
安装了最新版本的Node.Js()和npm包**(1.2.10)**当我运行 Express 命令来生成项目时,它向我抛出以下错误 buffer.js:240 switch (encoding &
JavaScript中有JSON编码/解码base64编码/解码函数吗? 最佳答案 是的,btoa() 和 atob() 在某些浏览器中可以工作: var enc = btoa("this is so
>>> unicode('восстановление информации', 'utf-16') Traceback (most recent call last): File "", line
我当然熟悉 java.net.URLEncoder 和 java.net.URLDecoder 类。但是,我只需要 HTML 样式的编码。 (我不想将 ' ' 替换为 '+' 等)。我不知道任何只做
有一个非常简单的 SSIS 包: OLE DB Source 通过 View 获取数据(数据库表 nvarchar 或 nchar 中的所有字符串列)。 派生列,用于格式化现有日期并将其添加到数据集(
我正在使用一个在 Node 中进行base64编码的软件,如下所示: const enc = new Buffer('test', 'base64') console.log(enc) 显示: 我正
我试图将带有日语字符的数据插入到 oracle 数据库中。事情是保存在数据库中的是一堆倒置的问号。我该如何解决这个问题 最佳答案 见 http://www.errcode.net/blogs/?p=6
当我在 java 中解压 zip 文件时,我发现文件名中出现了带有重音字符的奇怪行为。 西索: Add File user : L'equipe Technique -- Folder : spec
在网上冲浪我找到了 ExtJS 的 Ext.Gantt 插件,该扩展有一个特殊的编码。任何人都知道如何编码那样或其他复杂的形式。 Encoded Gantt Chart 最佳答案 它似乎被 Dean
我正在用C语言做一个编码任务,我进展顺利,直到读取符号并根据表格分配相应的代码的部分。我必须连接几个代码,直到它们的长度达到 32 位,为此我必须将它们写入一个文件中。这种写入文件的方法给我带来了很多
我有一个外部链接的 javascript 文件。在那个 javascript 里面,我有这个功能: function getMonthNumber(monthName){ monthName = mo
使用mechanize,我检索到一个网页的源页面,其中包含一些非ASCII字符,比如汉字。 代码如下: #using python2.6 from mechanize import Browser b
我有一个包含字母 ø 的文件。当我用这段代码 File.ReadLines(filePath) 读取它时,我得到了一个问号而不是它。 当我像这样添加编码时 File.ReadLines(filePat
如何翻译下面的字符串 H.P. Dembinski, B. K\'{e}gl, I.C. Mari\c{s}, M. Roth, D. Veberi\v{c} 进入 H. P. Dembinski,
我是一名优秀的程序员,十分优秀!