相关疑难解决方法(0)

什么是最小有效JSON?

我仔细阅读了JSON描述http://json.org/,但我不确定我是否知道这个简单问题的答案.哪些字符串是最小可能的有效JSON?

  • "string" 字符串是有效的JSON吗?
  • 42 是简单的数字有效JSON?
  • true 布尔值是有效的JSON吗?
  • {} 空对象是有效的JSON吗?
  • [] 空数组是一个有效的JSON吗?

javascript validation json

157
推荐指数
5
解决办法
6万
查看次数

有没有办法返回PHP`json_encode`编码UTF-8而不是Unicode?

有没有办法返回PHP json_encode编码UTF-8而不是Unicode?

$arr=array('a'=>'á');
echo json_encode($arr);
Run Code Online (Sandbox Code Playgroud)

mb_internal_encoding('UTF-8');$arr=array_map('utf8_encode',$arr);没有解决它.

结果: {"a":"\u00e1"}

预期结果: {"a":"á"}

php unicode json

43
推荐指数
4
解决办法
10万
查看次数

ECMA-404的出版是否影响了JSON文本的有效性,例如"2"或""你好"?

以下是有效的JSON文本,还是它们的顶级值必须是数组或对象?

4.0
Run Code Online (Sandbox Code Playgroud)
"Hello World"
Run Code Online (Sandbox Code Playgroud)
true
Run Code Online (Sandbox Code Playgroud)

过去的相关问题,例如什么是最小有效JSON?,这个简单的字符串被认为是有效的JSON吗?已经得出结论,他们不是.这是基于RFC-4627中 JSON格式的描述,其中指出:

2. JSON语法

JSON文本是一系列标记.标记集包括六个结构字符,字符串,数字和三个文字名称.

JSON文本是序列化对象或数组.

 JSON-text = object / array
Run Code Online (Sandbox Code Playgroud)

这些是六个结构特征:

[...]

但是,RFC-4627状态声明它"未指定任何类型的Internet标准".相反,JSON的官方标准是最近发布的ECMA-404.与RFC-4627不同,ECMA-404对有效JSON文本的描述不包括任何对象或数组的要求.例如,与上面引用最相似的部分缺少该要求:

4 JSON文本

JSON文本是由符合JSON值语法的Unicode代码点形成的标记序列.该组令牌包括六个结构标记,字符串,数字和三个文字名称标记.

六个结构代币:

[...]

鉴于这个新规范,编码的非数组非对象顶级值是否被认为是有效的JSON文本?

21
推荐指数
1
解决办法
5312
查看次数

为什么 JSON 编码 UTF-16 代理对而不是直接编码 Unicode 代码点?

为了对不在基本多语言平面中的代码点进行转义,字符被表示为十二个字符的序列,对 UTF-16 代理项对进行编码。因此,例如,仅包含 G 谱号字符 (U+1D11E) 的字符串可以表示为"\uD834\uDD1E"

ECMA-404:JSON 数据交换格式

我相信根本不需要编码这个字符,所以它可以直接表示为"". 但是,如果希望对其进行编码,则必须根据规范将其编码为"\uD834\uDD1E",而不是(看起来很合理)为"\u1d11e". 为什么是这样?

unicode json specifications ecma

6
推荐指数
1
解决办法
3776
查看次数

json_encode将Unicode(版权)字符的字符串编码为null?

我遇到了JSON编码特殊字符的问题.这些字符通常在我的计算机,记事本,浏览器甚至数据库中显示.但是,它们不是JSON编码.一个例子如下:

<?
$array['copyright_str'] = "Copyright site.com © 2011-2012";
echo json_encode($array);
?>
Run Code Online (Sandbox Code Playgroud)

site.com之后的版权符号是使JSON字符串回显的原因{"copyright_str":null}.虽然这很简单,但我让用户将配置文件数据输入到数据库中,这可以是任何东西.当其中一个时髦的角色出现时就会破坏它.什么是这个问题的好方法?我编码的API在很大程度上依赖于从数据库返回数据并通常将字符串打印为JSON.

我的多字节设置如下:

     php -e phpinfo.php  | grep mb
    Configure Command =>  './configure'  '--enable-bcmath' '--enable-calendar' '--enable-dbase' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-libxml' '--enable-magic-quotes' '--enable-mbstring' '--enable-pdo=shared' '--enable-sockets' '--enable-zip' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-bz2' '--with-curl=/opt/curlssl/' '--with-curlwrappers' '--with-freetype-dir=/usr' '--with-gd' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-libdir=lib64' '--with-libexpat-dir=/usr' '--with-libxml-dir=/opt/xml2/' '--with-mcrypt=/opt/libmcrypt/' '--with-mhash=/opt/mhash/' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-mysqli=/usr/bin/mysql_config' '--with-openssl=/usr' '--with-openssl-dir=/usr' '--with-pcre-regex=/opt/pcre' '--with-pdo-mysql=shared' '--with-pdo-sqlite=shared' '--with-pic' '--with-png-dir=/usr' '--with-sqlite=shared' '--with-ttf' '--with-xmlrpc' '--with-xpm-dir=/usr' '--with-zlib' '--with-zlib-dir=/usr'
    xmlrpc_error_number => 0 => 0
    mbstring
    Multibyte string engine => libmbfl …
Run Code Online (Sandbox Code Playgroud)

php unicode json character-encoding

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

带有mysql内容的json_encode和utf-8中的变音符号

我觉得我的胡子在试图找出这里的问题时会长大.

基本问题是,变音符号/特殊符号äöß...不起作用.我想每个人都厌倦了这些问题,但在网上发现的所有解决方案似乎都不起作用.

我在utf-8 Mysql数据库中有utf-8内容.我觉得问题在数据库连接的某处,但我无法弄清楚.

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8

我不确定问题是否是character_set_server的latin1,因为我没有进入那个mysql的东西.我也不知道如何更改原因我无法访问mysql服务器的配置文件.

无论是什么令我感到困惑,如果我从数据库中获取结果并回显它,print_r会给出正确的结果.

ini_set('default_charset','utf-8');
header('Content-Type: text/plain; > charset=utf-8');
Run Code Online (Sandbox Code Playgroud)

Firefox说char编码是utf-8但是当我输出时:

print_r($listnew);
echo json_encode($listnew[5]);
Run Code Online (Sandbox Code Playgroud)

print_r结果一切正确,但json_encode做错了.

print_r的:

[5] => Array (
       [id] => 5
       [data] => U-Bahnhof Theresienstraße
       [size] => 17
)
Run Code Online (Sandbox Code Playgroud)

json_encode:

{"id":5,"data":"U-Bahnhof Theresienstra\u00dfe","size":17}

我知道json_encode需要一个utf-8字符串才能在那里正常工作,我觉得我在这里遇到编码问题,但我无法确定它在哪里.

任何帮助,将不胜感激,

提前致谢.

I3

php mysql json utf-8 diacritics

4
推荐指数
1
解决办法
8959
查看次数