小编Car*_*rán的帖子

最终的表情符号编码方案

这是我的环境:客户端 - > iOS应用程序,服务器 - > PHP和MySQL.

从客户端到服务器的数据是通过HTTP POST完成的.

服务器到客户端的数据是用json完成的.

我想添加对emojis或任何utf8mb4字符的支持.我正在寻找在我的场景下处理这个问题的正确方法.

我的问题如下:

  1. POST是否允许utf8mb4,或者我应该将客户端中的数据转换为普通utf8?

  2. 如果我的数据库有整理和字符集utf8mb4,这是否意味着我应该能够存储'raw'emojis?

  3. 我应该尝试使用utf8mb4在数据库中工作,还是更安全/更好/更支持在utf8和编码符号中工作?如果是这样,我应该使用哪种编码方法,以便它在Objective-C和PHP(以及未来的android版本的java)中完美运行?

现在我的数据库是utf8mb4但是在尝试存储原始表情符号时出错.另一方面,我可以存储非utf8符号,如¿á.

当我在PHP中检索这个符号时,我首先需要执行SET CHARACTER SET utf8(如果我在utf8mb4中得到它们,则json_decode函数不起作用),然后对这些符号进行编码(例如,¿编码为\u00bf).

php mysql json utf-8 utf8mb4

7
推荐指数
1
解决办法
6997
查看次数

Protobuf、MapStruct 和 null 值

鉴于这个原型

option java_outer_classname = "FooProto";
message Foo {
    string bar = 1;
}
Run Code Online (Sandbox Code Playgroud)

这个java类:

public class MyFoo {
    String bar;
}
Run Code Online (Sandbox Code Playgroud)

这个映射器(使用 Mapstruct):

@Mapper
public interface FooMapper() {
    FooProto.Foo toProtoFoo(MyFoo myFoo);
}
Run Code Online (Sandbox Code Playgroud)

当我有一个带有空栏的 MyFoo 实例并尝试将其映射到原型时,我得到一个 NullPointerException。

这是因为映射器自动生成的代码调用原型的自动生成方法,如下所示:

public Builder setBar(java.lang.String value) {
    if (value == null) {
        throw new NullPointerException();
    }

    bar_ = value;
    onChanged();
    return this;
}
Run Code Online (Sandbox Code Playgroud)

有什么办法可以避免这个问题吗?(这不涉及在映射之前清理 MyFoo 实例,使其没有空值)

java protocol-buffers mapstruct

5
推荐指数
1
解决办法
2440
查看次数

单击按钮删除子项

有这个JS代码:

var prompter = (function(){
    var prompt = document.createElement('div');
    /* prompt-related stuff */

    var closeBtn = document.createElement('button');
    /* closeBtn stuff */

    prompt.appendChild(closeBtn);

    this.html = prompt;

    this.show = (function(){
        document.body.appendChild(this.html);
    });

    this.close = (function(){
        document.body.removeChild(this.html);
    });
});
Run Code Online (Sandbox Code Playgroud)

如果我做

    var p = new prompter();
    p.show();
Run Code Online (Sandbox Code Playgroud)

它确实显示了提示符,如果我这样做p.close();就会消失.

但我想要的是通过点击closeBtn它确实关闭.我有想法添加一个id提示,然后将属性onclick添加到按钮并通过它执行操作id,但这看起来真的很丑...

javascript dom

0
推荐指数
1
解决办法
37
查看次数

标签 统计

dom ×1

java ×1

javascript ×1

json ×1

mapstruct ×1

mysql ×1

php ×1

protocol-buffers ×1

utf-8 ×1

utf8mb4 ×1