我有一个相当奇怪的问题: 我正在使用一个数据库(我没有设计),这个数据库是多语言的,也就是说,有英文,西班牙文,俄文,越南文等标题。
从我所看到的带有“ñ”,“á”,“é”,“ë”等字符的标题已经以这种方式存储在数据库中:“& ntilde_”,所以我知道在html中为了显示这些字符如何编写它们是在我的PHP代码中调用这些字符时的“.wrapper {
max-width: 900px;
margin: 0 auto;
}
.wrapper>div {
background-color: lightcoral;
padding: 3em;
color: white;
/* ADDED THESE*/
display: flex;
align-items: flex-end;
justify-content: flex-start;
}
.wrapper {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 15px;
grid-auto-rows: minmax(100px, auto);
}
.one {
grid-column: 1;
grid-row: 1;
background-image: url('https://www.cdc.gov/nchs/images/hp2000/hdspr/hdslide11.gif');
background-position: 610px 500px;
}
.two {
grid-column: 2;
grid-row: 1 /3;
background-image: url('http://www.solidbackgrounds.com/images/2560x1440/2560x1440-indigo-web-solid-color-background.jpg');
}
.three {
grid-column: 1;
grid-row: 2 /3;
background-image: url('http://www.extremetech.com/wp-content/uploads/2012/02/GreenBackground.png');
}
.four {
grid-column: 3;
grid-row: 1 / 4;
background-image: url('http://www.ledr.com/colours/grey.jpg');
}
.five {
grid-column: 1 /3;
grid-row: 3;
background-image: url('https://www.cdc.gov/nchs/images/hp2000/hdspr/hdslide11.gif');
}
.six {
grid-column: 1 / 4;
grid-row: 4;
background-image: url('http://www.solidbackgrounds.com/images/2560x1440/2560x1440-indigo-web-solid-color-background.jpg');
}
.seven {
grid-column: 1;
background-image: url('http://www.extremetech.com/wp-content/uploads/2012/02/GreenBackground.png');
}
.eight {
grid-column: 1;
grid-row: 8 / 5;
background-image: url('https://i.ytimg.com/vi/3qlRNWBWr5o/maxresdefault.jpg');
}
.nine {
grid-column: 2;
grid-row: 7/5;
background-image: url('https://www.cdc.gov/nchs/images/hp2000/hdspr/hdslide11.gif');
}
.ten {
grid-column: 3;
background-image: url('https://i.ytimg.com/vi/3qlRNWBWr5o/maxresdefault.jpg');
}
.eleven {
grid-column: 3;
grid-row: 7/6;
background-image: url('http://www.solidbackgrounds.com/images/2560x1440/2560x1440-indigo-web-solid-color-background.jpg');
}
.twelve {
grid-column: 2/4;
grid-row: 7;
background-image: url('http://www.extremetech.com/wp-content/uploads/2012/02/GreenBackground.png');
}
.thirteen {
grid-column: 1/4;
grid-row: 8;
background-image: url('https://i.ytimg.com/vi/3qlRNWBWr5o/maxresdefault.jpg');
}
/*HOVER*/
.one:hover {
opacity: .6;
}
.two:hover {
opacity: .6;
}
.three:hover {
opacity: .6;
}
.four:hover {
opacity: .6;
}
.five:hover {
opacity: .6;
}
.six:hover {
opacity: .6;
}
.eight:hover {
opacity: .6;
}
.nine:hover {
opacity: .6;
}
.ten:hover {
opacity: .6;
}
.eleven:hover {
opacity: .6;
}
.twelve:hover {
opacity: .6;
}
.thirteen:hover {
opacity: .6;
}
@media only screen and (max-width: 768px) {
.wrapper {
display: block;
}
.margin-bot {
margin-bottom: 2px;
}
}
”(不使用任何类型的转换)以下情况发生在我身上:
<div class="wrapper">
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="one margin-bot">one</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="two margin-bot">two</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="three margin-bot">three</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="three margin-bot">four</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="four margin-bot">five</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="five margin-bot">six</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="six margin-bot">seven</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="eight margin-bot">eight</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="nine margin-bot">nine</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="ten margin-bot">ten</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="eleven margin-bot">eleven</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="twelve margin-bot">twelve</div>
<div onclick="location.href='landing.html';" style="cursor: pointer;" class="thirteen margin-bot">thirteen</div>
</div>
我尝试使用utf_decode和html_entities_decode,但这不起作用。 我想这样做,使用str_replace从标题“Señ_ora”中删除“_”,但我得到了:“Se&amp; ntildeora”
答案 0 :(得分:1)
“ñ”,“á”,“é”,“ë”类型的字符以这种方式存储在数据库中:“&amp; ntilde _”
这很奇怪。
首先,确保您的数据库实际上包含这些_
个字符,并确保您没有看到某种替换字符被渲染。无论您使用什么程序来显示数据,都可能会错误地设置某些字符集选项。
您可以说SELECT field, HEX(field) FROM table WHERE field LIKE '%' ORDER BY CHAR_LENGTH(field) LIMIT 10
找一些相对较短的例子。然后在十六进制输出上查找3B
(;
的十六进制)和5F
(_
的十六进制)。
例如,我的UTF8设置上的SELECT HEX('Señora'), HEX('Señ_ora')
给出了这两个字符串
5365266E74696C64653B6F7261
xx
5365266E74696C64655F6F7261
看到区别?
如果_
字符肯定在您的数据中,那么您需要进行一些网络搜索。您是否可以访问设置此项的人,以便您可以询问?如果是的话,那就做。它将为您节省一些逆向工程时间。
如果您必须在没有帮助的情况下解决此问题,您可以尝试使用这样的
$my_data = str_replace('_',';', $my_data);
这应该可以正确地格式化有权限的字符。 但,它还会将独立的_
字符更改为;
。要解决此问题,您需要一份包含数据中所有授权字符的列表,并且您需要单独更改这些字符。
答案 1 :(得分:0)
根据我的理解,你也可以在使用PHP代码连接/建立与mysql的连接时处理这个问题。
//确保数据是UTF *,数据库可以看到重音和内容
$db = mysql_connect('localhost', 'user', 'pass');
if (!$db) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbname");
mysql_query("SET NAMES 'utf8'", $db);
mysql_query("SET CHARACTER_SET 'utf8'", $db);