Restore character encoding guesser (#2755)

* Fixes #486. Builds on code from Steffen Stundzig

- Switch from ICU4J to juniversalchardet
  (Java port of Mozilla charset detector)
- Replace org.json code with Jackson
- Add tests
- Add TODO for multi-file character encoding mismatches

* Restore dependency lost in rebase

Co-authored-by: Steffen Stundzig <git@stundzig.de>
This commit is contained in:
Tom Morris 2020-06-22 00:04:51 -04:00 committed by GitHub
parent 60ec57aff4
commit e293602897
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 8776 additions and 1 deletions

View File

@ -357,6 +357,11 @@
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.github.albfernandez</groupId>
<artifactId>juniversalchardet</artifactId>
<version>2.3.2</version>
</dependency>
<!-- test dependencies -->

View File

@ -45,6 +45,7 @@ import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.refine.ProjectMetadata;
import com.google.refine.importers.ImporterUtilities.MultiFileReadingProgress;
import com.google.refine.importing.EncodingGuesser;
import com.google.refine.importing.ImportingJob;
import com.google.refine.importing.ImportingParser;
import com.google.refine.importing.ImportingUtilities;
@ -72,7 +73,7 @@ abstract public class ImportingParserBase implements ImportingParser {
ObjectNode options = ParsingUtilities.mapper.createObjectNode();
JSONUtilities.safePut(options, "includeFileSources", fileRecords.size() > 1);
JSONUtilities.safePut(options, "includeArchiveFileName", ImportingUtilities.hasArchiveFileField(fileRecords));
EncodingGuesser.guessInitialEncoding(fileRecords, options);
return options;
}

View File

@ -0,0 +1,74 @@
package com.google.refine.importing;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.mozilla.universalchardet.UniversalDetector;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.refine.util.JSONUtilities;
/**
* This class tries to find the correct encoding based on the
* http://site.icu-project.org/ and the icu4j library
* http://site.icu-project.org/home/why-use-icu4j.
*
* @author <a href="mailto:kontakt@stundzig.de">Steffen Stundzig</a>
*/
public final class EncodingGuesser {
public final static void guess(final ImportingJob job)
throws FileNotFoundException, IOException {
ObjectNode retrievalRecord = job.getRetrievalRecord();
if (retrievalRecord != null) {
ArrayNode fileRecords = JSONUtilities.getArray(retrievalRecord, "files");
if (fileRecords != null) {
// TODO: If different files have different encodings, we're only able to present a single
// encoding to the user currently. Should we check for conflicts? Warn the user?
for (int i = 0; i < fileRecords.size(); i++) {
ObjectNode record = JSONUtilities.getObjectElement(fileRecords, i);
String encoding = ImportingUtilities.getEncoding(record);
if (StringUtils.isBlank(encoding)) {
String location = JSONUtilities.getString(record, "location", null);
if (location != null) {
try (InputStream is = new BufferedInputStream(
new FileInputStream(new File(job.getRawDataDir(), location)))) {
String detected = UniversalDetector.detectCharset(is);
if (detected != null) {
JSONUtilities.safePut(record, "encoding", detected);
}
}
}
}
}
}
}
}
/**
* uses the first found encoding in the file records as initial encoding and
* put them into the options
*
* @param fileRecords
* @param options
*/
public final static void guessInitialEncoding(final List<ObjectNode> fileRecords, final ObjectNode options) {
if (fileRecords != null) {
for (ObjectNode record : fileRecords) {
String encoding = JSONUtilities.getString(record, "encoding", null);
if (!StringUtils.isBlank(encoding)) {
JSONUtilities.safePut(options, "encoding", encoding);
break;
}
}
}
}
}

View File

@ -145,6 +145,8 @@ public class ImportingUtilities {
ArrayNode fileSelectionIndexes = ParsingUtilities.mapper.createArrayNode();
JSONUtilities.safePut(config, "fileSelection", fileSelectionIndexes);
EncodingGuesser.guess(job);
String bestFormat = ImportingUtilities.autoSelectFiles(job, retrievalRecord, fileSelectionIndexes);
bestFormat = ImportingUtilities.guessBetterFormat(job, bestFormat);

3341
main/tests/data/big5.html Normal file

File diff suppressed because it is too large Load Diff

3
main/tests/data/big5.txt Normal file
View File

@ -0,0 +1,3 @@
科技紫微網:全球最大算命網站,張盛舒創辦
科技紫微網是全球最大算命網站,由張盛舒創辦,提供免費算命、紫微、星座、占卜、姓名、命名、前世、塔羅、運勢、點燈、愛情、姻緣、命盤、農民曆、心理測驗、生肖及紫微課程教學
紫微,紫微斗數,免費紫微,紫微命盤,紫微課程,前世,占卜

884
main/tests/data/euc-jp.html Normal file
View File

@ -0,0 +1,884 @@
<!DOCTYPE html>
<html lang="ja" class="osWindows browserUndefined servicePortal pageHomeJpMixi domainJpMixi">
<head>
<title>ソーシャル・ネットワーキング サービス [mixi(ミクシィ)]</title>
<!-- header meta values -->
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
<meta property="og:site_name" content="mixi" />
<meta property="og:url" content="https://mixi.jp/" />
<meta property="og:type" content="website" />
<meta property="og:description" content="mixi(ミクシィ)は、友人・知人とのコミュニケーションをさらに便利に楽しくするSNSというサービスです。" />
<meta property="og:image" content="https://img.mixi.net/img/public/pc/common/portal_ogp001.png" />
<meta property="og:title" content="mixi(ミクシィ)" />
<meta name="application-name" content="mixi" />
<meta name="msapplication-starturl" content="/home.pl?from=pin" />
<meta name="msapplication-navbutton-color" content="#E0C074" />
<meta name="msapplication-window" content="width=100%;height=100%" />
<meta name="msapplication-tooltip" content="友人とコミュニケーションを楽しもう!" />
<meta name="description" lang="ja" content="mixi(ミクシィ)は、日記、写真共有、ゲームや便利ツール満載のアプリなど、さまざまなサービスで友人・知人とのコミュニケーションをさらに便利に楽しくする、日本最大規模のソーシャル・ネットワーキングサービスです。" />
<!-- / header meta values -->
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/polyfill/core-js/core-js-3.6.4.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/polyfill/dialog-polyfill/dialog-polyfill-0.5.0.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/polyfill/datalist-polyfill/datalist-polyfill-1.24.3.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/polyfill/details-element-polyfill/details-element-polyfill-2.4.0.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/polyfill/relative-time-format/relative-time-format-1.0.5.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/polyfill/fetch/fetch-3.0.0.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/polyfill/classList/classList.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/polyfill/svg4everybody/svg4everybody-2.1.9.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/polyfill/svg4everybody/run.js?1514732400" crossorigin="anonymous"></script>
<link rel="stylesheet" type="text/css" href="https://img.mixi.net/static/polyfill/dialog-polyfill/dialog-polyfill-0.5.0.css?1514732400" />
<!-- header css and links -->
<link rel="stylesheet" type="text/css" href="https://img.mixi.net/static/css/public/pc/common.css?1514732400" />
<link rel="stylesheet" type="text/css" href="https://img.mixi.net/static/css/build/pc/portal.production.css?1591062397" />
<link href="https://mixi.jp/" rel="canonical" /><link href="https://img.mixi.net/img/basic/favicon.ico" type="image/vnd.microsoft.icon" rel="icon" /><link href="https://img.mixi.net/img/basic/favicon.ico" type="image/vnd.microsoft.icon" rel="shortcut icon" /><link href="https://img.mixi.net/img/smartphone/touch/favicon/x001_prec.png" rel="apple-touch-icon-precomposed" />
<!-- / header css and links -->
<!-- header javascript --><script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/mixi_qa/errorreport.production.js?1592552077" crossorigin="anonymous"></script><script id="js-gateway" type="application/x.mixi.js-gateway"><!--{"recaptcha_v3_sitekey":"6LcHT30UAAAAAPVbk-2NO8dLZqhPLsFDPXbT_6cZ","url_mixi_prefix":"http://mixi.jp/","url_mixi_plugin_prefix":"https://plugins.mixi.jp/","url_fan_page_redirector_prefix":"http://p.mixi.jp/","url_open_prefix":"https://open.mixi.jp/","url_mobile_game_prefix":"http://m.mixi.jp/","CONFIG_IMG_BASE":"https://img.mixi.net","url_mobile_fan_apps_runtime":"http://mpa.mixi.net","url_mixi_static_prefix":"http://static.mixi.jp/","page_encoding":"euc-jp","url_external_script_prefix":"https://external-script.mixi.net/","login_member_display_name":"","url_mixi_prefix_ssl":"https://mixi.jp/","error_report_sampling_rate":0.07,"is_premium_login_member":0,"url_auth_prefix_ssl":"https://auth.in.mixi.co.jp/","url_fan_prefix":"http://page.mixi.jp/","url_pic_logo_base":"http://logo-imagecluster.img.mixi.jp/photo/comm","STATIC_FILE_BASE":"https://img.mixi.net","recaptcha_v2_sitekey":"6LcB2F8UAAAAANn_RjvAr3Zy0ljUAuyFskGUvSiZ","can_verify_recaptcha_v2":1,"url_mixi_plugin_prefix_ssl":"https://plugins.mixi.jp/","url_photo_prefix":"https://photo.mixi.jp/","url_fan_prefix_ssl":"https://page.mixi.jp/","url_application_sap_prefix":"https://sap.mixi.jp/","url_photo_prefix_ssl":"https://photo.mixi.jp/","url_news_prefix_ssl":"https://news.mixi.jp/","url_payment_prefix_ssl":"https://payment.mixi.jp/","url_news_prefix":"http://news.mixi.jp/","rpc_post_key":"054ed742486f2cf0f03c7b9028a57fbee6f1bab7","url_mixi_static_prefix_ssl":"https://static.mixi.jp/","is_adult_login_member":0,"url_pic_logo_base_ssl":"https://logo-imagecluster.img.mixi.jp/photo/comm","url_corp_develop_prefix":"http://developer.mixi.co.jp/","RUN_MODE":"production","url_mobile_pr_prefix":"http://pr.m.mixi.jp/","url_partner_ads_prefix_ssl":"https://partner.ads.mixi.jp/","url_pr_prefix":"http://pr.mixi.jp/","url_corp_prefix":"http://mixi.co.jp/","url_seller_prefix_ssl":"https://seller.mixi.jp/","can_verify_recaptcha_v3":1,"url_ad_impact_prefix":"http://n2.ads.mreco0.jp/","url_mobile_prefix":"http://m.mixi.jp/","news_prefix":"http://news.mixi.jp/","url_fan_apps_prefix":"http://pageapps.mixi.jp/","url_smartphone_game_prefix":"http://sp.game.mixi.net/","url_corp_pr_prefix":"http://pr.mixi.co.jp/","url_img_ads_prefix":"http://img.ads.mreco0.jp/img/","login_member_id":null,"url_game_prefix":"http://mixi.jp/","url_gear_prefix_ssl":"https://gear.in.mixi.co.jp/","login_member_thumbnail_url":""}--></script>
<script type="text/javascript"><!--
(function(){
if( !window['Mixi'] ){
window.Mixi = {};
}
var value;
window.Mixi.Gateway = {
getParam:function(key){
if( !value ) {
value = JSON.parse(document.getElementById('js-gateway').text.replace(/^<!--(.*)-->$/, '$1'));
}
if( !key ){
return value;
}
return value[key];
}
};
})();
--></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/lib/prototype-effects-1.6.0.2-1.8.1-compress.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/lib/underscore-string-1.3.3-2.0.0-compress.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/lib/namespace-1.0.1-brook-compress.js?1588032377" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/mixi.js?1514732400" crossorigin="anonymous"></script><!-- / header javascript -->
<script type="text/javascript">
// universal analytics (analytics.js)
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-50931519-16', 'mixi.jp', {
'sampleRate': 10,
'name': 'global_raw_url'
});
ga('global_raw_url.require', 'displayfeatures');
ga('global_raw_url.set', {"dimension1":"no_login","dimension2":"none"});
ga('global.set', {"dimension15":location.protocol});
ga('global_raw_url.send', 'pageview');
ga('create', 'UA-50931519-1', 'mixi.jp', {
'name': 'global'
});
ga('global.require', 'displayfeatures');
ga('global.set', {
'page': decodeURIComponent("%2Fhome.pl%3Fq%3Dportal")
});
ga('global.set', {"dimension1":"no_login","dimension2":"none"});
ga('global.set', {"dimension15":location.protocol});
ga('global.send', 'pageview');
var _mixiGaEnabledTrackerList = ["global_raw_url","global"];
var _mixiGaTimingInfo = { startTime: (new Date()).getTime() };
</script>
<!-- Google Tag Manager -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WQRBQVS"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-WQRBQVS');</script>
<!-- End Google Tag Manager -->
</head>
<body>
<div id="page" class="FRAME2016_page">
<script type="text/javascript">//<![CDATA[
// Disable iframe encapsulation
if (window != top) top.location.href = location.href;
//]]></script>
<div class="COMMONDOC_header2017_headerArea widget"
data-widget-namespace="jp.mixi.menu.widget.pc.header"
data-global-navi=".JS_globalNavi"
data-drawer=".JS_drawer"
data-drawer-toggle-button=".JS_drawerToggleButton"
data-drawer-toggle-button-toggle-class="STATE_closeNav"
data-drawer-header-area=".JS_drawerHeaderArea"
data-drawer-menu-area=".JS_drawerMenuArea"
data-drawer-bottom-margin="30"
>
<div class="COMMONDOC_header2017_globalNavArea JS_globalNavi">
<div class="COMMONDOC_header2017_globalNav MXARIA2018_header01" role="banner">
<div class="COMMONDOC_header2017_globalNav__toggleNav"><div class="COMMONDOC_header2017_toggleNav"><a href="#mainNav" onclick="return false;" class="COMMONDOC_header2017_navTrigger JS_drawerToggleButton"><span class="COMMONDOC_header2017_hamburgerNavBar"></span></a><div class="COMMONDOC_header2017_mainNav JS_drawer" style="display:none;"><div class="COMMONDOC_header2017_mainNavHeader JS_drawerHeaderArea"><a href="https://mixi.jp/login.pl?next_url=https%3A%2F%2Fmixi.jp%2F&from=drawer_menu" class="COMMONDOC_header2017_mainNavAccountLabel"><span class="COMMONDOC_header2017_mainNavAccountLabel__thumbnail" style="background-image:url(https://img.mixi.net/img/basic/common/noimage_member180.gif);"></span><span class="COMMONDOC_header2017_mainNavAccountLabel__userName">ログイン</span></a></div><dl class="COMMONDOC_header2017_mainNavList JS_drawerMenuArea"><dt class="COMMONDOC_header2017_mainNavListTitle">サービス</dt><dd><a href="https://mixi.jp/search_community.pl?from=drawer_menu&search_mode=title" class="COMMONDOC_header2017_mainNavLink COMMONDOC_header2017_mainNavLink--community">コミュニティ</a></dd><dd><a href="https://news.mixi.jp/?from=drawer_menu" class="COMMONDOC_header2017_mainNavLink COMMONDOC_header2017_mainNavLink--news">ニュース</a></dd><dd><a href="http://mixi.jp/redirector.pl?id=4950&from=drawer_menu" class="COMMONDOC_header2017_mainNavLink COMMONDOC_header2017_mainNavLink--game">ゲーム</a></dd><dd><a href="http://page.mixi.jp/page_portal.pl?from=drawer_menu" class="COMMONDOC_header2017_mainNavLink COMMONDOC_header2017_mainNavLink--page">ページ</a></dd><dd><a href="https://open.mixi.jp/diary?from=drawer_menu" class="COMMONDOC_header2017_mainNavLink COMMONDOC_header2017_mainNavLink--openDiary">みんなの日記</a></dd><dd><a href="https://mixi.jp/search_item.pl?from=drawer_menu" class="COMMONDOC_header2017_mainNavLink COMMONDOC_header2017_mainNavLink--review">レビュー</a></dd><dt class="COMMONDOC_header2017_mainNavListTitle">その他</dt><dd><a href="http://mixi.jp/release_info.pl?from=drawer_menu" class="COMMONDOC_header2017_mainNavLink COMMONDOC_header2017_mainNavLink--releaseInfo">運営者からのお知らせ</a></dd><dd><a href="http://mixi.jp/premium.pl?from=drawer_menu" class="COMMONDOC_header2017_mainNavLink COMMONDOC_header2017_mainNavLink--premium">mixiプレミアム</a></dd></dl></div></div></div>
<div class="COMMONDOC_header2017_globalNav__logo"><a href="http://mixi.jp/home.pl?from=g_navi" class="COMMONDOC_header2017_mainLogo"><img class="COMMONDOC_header2017_mainLogoImg" src="https://img.mixi.net/img/basic/icon/logo_mixi001.svg" alt="mixi" width="42" height="18" /></a></div>
</div>
</div>
</div>
<div class="COMMONDOC_header2017_adBanner MXARIA2018_ad01" role="complementary" aria-label="広告">
<div id="div-gpt-ad-1520326808867-0"
class="adsbygoogle bigBanner_largeBigBanner_billboard widget"
aria-hidden="true"
data-widget-namespace="jp.mixi.adnetwork.google.dfp.widget"
data-image-size="728x90,970x90,970x250"
data-ad-area-name="header_v2"
data-ad-channel="PC_default_header_v2_logout"
data-ad-client="421814808"
data-adnetwork-type="doubleclick_for_publishers"
data-ad-slot="div-gpt-ad-1520326808867-0"
data-key-value="view=pc&scriptPath=home.pl&is_game=0&ut=0&protocol=https&is_login=0&is_ad_disabled=0&env=production"
data-is-amazon-header-bidding-enabled="1"
data-amazon-header-bidding-slot-name="p_mixi_970x250_PC-default-header-v2-logout_7268"
data-prebid-header-bidding-params-json="&#123;&quot;970x250&quot;:[&#123;&quot;params&quot;:&#123;&quot;placementId&quot;:&quot;54061&quot;&#125;,&quot;bidder&quot;:&quot;yieldone&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;zoneId&quot;:&quot;1148064&quot;,&quot;accountId&quot;:&quot;12046&quot;,&quot;siteId&quot;:&quot;231906&quot;&#125;,&quot;bidder&quot;:&quot;rubicon&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;adSlot&quot;:&quot;div-gpt-ad-1520326808867-0@970x250&quot;,&quot;publisherId&quot;:&quot;156959&quot;&#125;,&quot;bidder&quot;:&quot;pubmatic&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;usePaymentRule&quot;:true,&quot;placementId&quot;:&quot;17644453&quot;&#125;,&quot;bidder&quot;:&quot;appnexusAst&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;placementId&quot;:&quot;86793&quot;&#125;,&quot;bidder&quot;:&quot;yieldone&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;zoneId&quot;:&quot;1148064&quot;,&quot;accountId&quot;:&quot;12046&quot;,&quot;siteId&quot;:&quot;231906&quot;&#125;,&quot;bidder&quot;:&quot;rubicon&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;usePaymentRule&quot;:true,&quot;placementId&quot;:&quot;18107967&quot;&#125;,&quot;bidder&quot;:&quot;appnexusAst&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;asi&quot;:&quot;2AXZYkEWR&quot;&#125;,&quot;bidder&quot;:&quot;aja&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;network&quot;:&quot;15155.1&quot;,&quot;placement&quot;:&quot;5220601&quot;,&quot;region&quot;:&quot;as&quot;&#125;,&quot;bidder&quot;:&quot;aol&quot;&#125;],&quot;970x90&quot;:[&#123;&quot;params&quot;:&#123;&quot;usePaymentRule&quot;:true,&quot;placementId&quot;:&quot;17644452&quot;&#125;,&quot;bidder&quot;:&quot;appnexusAst&quot;&#125;],&quot;728x90&quot;:[&#123;&quot;params&quot;:&#123;&quot;placementId&quot;:&quot;54062&quot;&#125;,&quot;bidder&quot;:&quot;yieldone&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;zoneId&quot;:&quot;1148064&quot;,&quot;accountId&quot;:&quot;12046&quot;,&quot;siteId&quot;:&quot;231906&quot;&#125;,&quot;bidder&quot;:&quot;rubicon&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;adSlot&quot;:&quot;div-gpt-ad-1520326808867-0@728x90&quot;,&quot;publisherId&quot;:&quot;156959&quot;&#125;,&quot;bidder&quot;:&quot;pubmatic&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;usePaymentRule&quot;:true,&quot;placementId&quot;:&quot;17644451&quot;&#125;,&quot;bidder&quot;:&quot;appnexusAst&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;asi&quot;:&quot;DgGTbrLiR&quot;&#125;,&quot;bidder&quot;:&quot;aja&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;placementId&quot;:&quot;85540&quot;&#125;,&quot;bidder&quot;:&quot;yieldone&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;zoneId&quot;:&quot;1148064&quot;,&quot;accountId&quot;:&quot;12046&quot;,&quot;siteId&quot;:&quot;231906&quot;&#125;,&quot;bidder&quot;:&quot;rubicon&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;usePaymentRule&quot;:true,&quot;placementId&quot;:&quot;18107926&quot;&#125;,&quot;bidder&quot;:&quot;appnexusAst&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;asi&quot;:&quot;2AXZYkEWR&quot;&#125;,&quot;bidder&quot;:&quot;aja&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;network&quot;:&quot;15155.1&quot;,&quot;placement&quot;:&quot;5220594&quot;,&quot;region&quot;:&quot;as&quot;&#125;,&quot;bidder&quot;:&quot;aol&quot;&#125;]&#125;"
>
</div>
</div>
<div id="bodyArea" class="FRAME2016_bodyArea">
<div id="bodyMain" class="FRAME2016_bodyMain">
<div class="sectionHeader">
<h2 class="news">mixiニュース</h2>
<p><a href="https://news.mixi.jp/">mixiニュースへ</a></p>
<!--/sectionHeader--></div>
<div class="newsContent sectionContent">
<ul class="newsList">
<li><a href="https://news.mixi.jp/view_news.pl?id=6127508&media_id=168">定期購入契約のトラブル増加</a><img class="photoIcon" src="https://img.mixi.net/img/public/pc/icon/news_photo001.gif" width="14" height="11" alt="写真" /><span class="reactionCount level02"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127508">336</a></span></li>
<li><a href="https://news.mixi.jp/view_news.pl?id=6127617&media_id=4">子ども2人監禁容疑 父親を逮捕</a><span class="reactionCount level01"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127617">233</a></span></li>
<li><a href="https://news.mixi.jp/view_news.pl?id=6127865&media_id=2">絶滅危惧種ツシマヤマネコ死ぬ</a><img class="photoIcon" src="https://img.mixi.net/img/public/pc/icon/news_photo001.gif" width="14" height="11" alt="写真" /><span class="reactionCount level01"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127865">148</a></span></li>
<li><a href="https://news.mixi.jp/view_news.pl?id=6127738&media_id=8">ジャニーズ林翔太結婚、Jr卒業</a><img class="photoIcon" src="https://img.mixi.net/img/public/pc/icon/news_photo001.gif" width="14" height="11" alt="写真" /><span class="reactionCount level01"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127738">162</a></span></li>
<li><a href="https://news.mixi.jp/view_news.pl?id=6127905&media_id=54">与田祐希 生放送で髪バッサリ</a><img class="photoIcon" src="https://img.mixi.net/img/public/pc/icon/news_photo001.gif" width="14" height="11" alt="写真" /><span class="reactionCount level01"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127905">74</a></span></li>
<li><a href="https://news.mixi.jp/view_news.pl?id=6127736&media_id=137">戸田恵梨香で一番好きな役は</a><img class="photoIcon" src="https://img.mixi.net/img/public/pc/icon/news_photo001.gif" width="14" height="11" alt="写真" /><span class="reactionCount level01"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127736">196</a></span></li>
<li><a href="https://news.mixi.jp/view_news.pl?id=6127533&media_id=54">元「あいのり」桃が再婚を報告</a><img class="photoIcon" src="https://img.mixi.net/img/public/pc/icon/news_photo001.gif" width="14" height="11" alt="写真" /><span class="reactionCount level01"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127533">294</a></span></li>
<li><a href="https://news.mixi.jp/view_news.pl?id=6127700&media_id=202">牛さんクレープ販売終了の理由</a><img class="photoIcon" src="https://img.mixi.net/img/public/pc/icon/news_photo001.gif" width="14" height="11" alt="写真" /><span class="reactionCount level01"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127700">183</a></span></li>
<li><a href="https://news.mixi.jp/view_news.pl?id=6127852&media_id=2">マスクなし 86%が「気になる」</a><img class="photoIcon" src="https://img.mixi.net/img/public/pc/icon/news_photo001.gif" width="14" height="11" alt="写真" /><span class="reactionCount level02"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127852">439</a></span></li>
</ul>
<div class="photoNews">
<ul>
<li>
<h3>フォトニュース</h3>
<span class="photoUpIcon"><img src="https://img.mixi.net/img/public/pc/icon/photoup001.gif" height="25" width="21" alt="up" />
</span>
<div class="photo">
<a href="https://news.mixi.jp/view_photo_group.pl?group_id=1866">
<img src="https://img.mixi.net/photo/news/2_20200618_175_002_160x160.jpg" alt="愛らしい赤ちゃん" /></a>
</div>
<p class="title"><a href="https://news.mixi.jp/view_photo_group.pl?group_id=1866">愛らしい赤ちゃん</a></p>
</li>
<li>
<h3>話題のニュース</h3>
<span class="photoUpIcon"><img src="https://img.mixi.net/img/public/pc/icon/photoup001.gif" height="25" width="21" alt="up" /></span>
<div class="photo">
<a href="https://news.mixi.jp/view_news.pl?id=6127262&media_id=100"><img src="https://img.mixi.net/photo/news/100_20200620_7774210_001_160x160.jpg" alt="(左から)エマ・ワトソン、ダニエル・ラドクリフ、ルパート・グリント CAFLO" /></a>
</div>
<p class="title">
<a href="https://news.mixi.jp/view_news.pl?id=6127262&media_id=100">ハリー・ポッター子役たちの今</a>
<span class="reactionCount level01"><a href="https://news.mixi.jp/list_quote.pl?type=voice&sort=feedback_count&news_id=6127262">90</a></span>
</p>
<p class="media">クランクイン!</p>
<p class="date">2020年06月20日&nbsp;09:41</p>
</li>
</ul>
</div>
<!--/newsContent--></div>
<div class="adArea01 MXARIA2018_ad01" role="complementary" aria-label="広告">
<div class="adL" aria-hidden="true">
<div class="adMain">
<div id="div-gpt-ad-1481095828717-0"
class="adsbygoogle square_rectangle widget"
data-widget-namespace="jp.mixi.adnetwork.google.dfp.widget"
data-image-size="250x250,300x250"
data-ad-area-name="portal_footer_left"
data-ad-channel="PC_portal_footer_left"
data-ad-client="421814808"
data-adnetwork-type="doubleclick_for_publishers"
data-ad-slot="div-gpt-ad-1481095828717-0"
data-key-value="view=pc&scriptPath=home.pl&is_game=0&ut=0&protocol=https&is_login=0&is_ad_disabled=0&env=production"
data-is-amazon-header-bidding-enabled="1"
data-amazon-header-bidding-slot-name="p_mixi_300x250_PC-portal-footer-left_7268"
data-prebid-header-bidding-params-json="&#123;&quot;300x250&quot;:[&#123;&quot;params&quot;:&#123;&quot;placementId&quot;:&quot;85549&quot;&#125;,&quot;bidder&quot;:&quot;yieldone&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;zoneId&quot;:&quot;1530652&quot;,&quot;accountId&quot;:&quot;12046&quot;,&quot;siteId&quot;:&quot;231906&quot;&#125;,&quot;bidder&quot;:&quot;rubicon&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;usePaymentRule&quot;:true,&quot;placementId&quot;:&quot;18107981&quot;&#125;,&quot;bidder&quot;:&quot;appnexusAst&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;asi&quot;:&quot;wS9ZLzPZg&quot;&#125;,&quot;bidder&quot;:&quot;aja&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;network&quot;:&quot;15155.1&quot;,&quot;placement&quot;:&quot;5220528&quot;,&quot;region&quot;:&quot;as&quot;&#125;,&quot;bidder&quot;:&quot;aol&quot;&#125;]&#125;"
>
</div>
</div>
</div>
<div class="adR" aria-hidden="true">
<div class="adMain">
<div id="div-gpt-ad-1481095907263-0"
class="adsbygoogle square_rectangle widget"
data-widget-namespace="jp.mixi.adnetwork.google.dfp.widget"
data-image-size="250x250,300x250"
data-ad-area-name="portal_footer_right"
data-ad-channel="PC_portal_footer_right"
data-ad-client="421814808"
data-adnetwork-type="doubleclick_for_publishers"
data-ad-slot="div-gpt-ad-1481095907263-0"
data-key-value="view=pc&scriptPath=home.pl&is_game=0&ut=0&protocol=https&is_login=0&is_ad_disabled=0&env=production"
data-is-amazon-header-bidding-enabled="1"
data-amazon-header-bidding-slot-name="p_mixi_300x250_PC-portal-footer-right_7268"
data-prebid-header-bidding-params-json="&#123;&quot;300x250&quot;:[&#123;&quot;params&quot;:&#123;&quot;placementId&quot;:&quot;85550&quot;&#125;,&quot;bidder&quot;:&quot;yieldone&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;zoneId&quot;:&quot;1530654&quot;,&quot;accountId&quot;:&quot;12046&quot;,&quot;siteId&quot;:&quot;231906&quot;&#125;,&quot;bidder&quot;:&quot;rubicon&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;usePaymentRule&quot;:true,&quot;placementId&quot;:&quot;18107982&quot;&#125;,&quot;bidder&quot;:&quot;appnexusAst&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;asi&quot;:&quot;IO9ZYkEZg&quot;&#125;,&quot;bidder&quot;:&quot;aja&quot;&#125;,&#123;&quot;params&quot;:&#123;&quot;network&quot;:&quot;15155.1&quot;,&quot;placement&quot;:&quot;5220540&quot;,&quot;region&quot;:&quot;as&quot;&#125;,&quot;bidder&quot;:&quot;aol&quot;&#125;]&#125;"
>
</div>
</div>
</div>
<!--/adArea01--></div>
<div class="sectionHeader">
<h2 class="community">mixiコミュニティ</h2>
<p><a href="https://mixi.jp/search_community.pl">mixiコミュニティへ</a></p>
<!--/sectionHeader--></div>
<div class="communityContent sectionContent">
<ul class="thumbnailList col4">
<li>
<a class="thumbnail" href="https://mixi.jp/view_community.pl?id=6139754"><img src="https://logo-imagecluster.img.mixi.jp/photo/comm/97/54/6139754_33.jpg" alt="【スマイル空港】 「編隊飛行」" /></a>
<span class="name"><a href="https://mixi.jp/view_community.pl?id=6139754">【スマイル空港】 「編隊飛行」</a>(241)</span>
</li>
<li>
<a class="thumbnail" href="https://mixi.jp/view_community.pl?id=641"><img src="https://logo-imagecluster.img.mixi.jp/photo/comm/6/41/641_218.jpg" alt="広島東洋カープ" /></a>
<span class="name"><a href="https://mixi.jp/view_community.pl?id=641">広島東洋カープ</a>(56084)</span>
</li>
<li>
<a class="thumbnail" href="https://mixi.jp/view_community.pl?id=1310545"><img src="https://logo-imagecluster.img.mixi.jp/photo/comm/5/45/1310545_60.jpg" alt="静岡で人脈広げたいin mixi" /></a>
<span class="name"><a href="https://mixi.jp/view_community.pl?id=1310545">静岡で人脈広げたいin mixi</a>(9593)</span>
</li>
<li>
<a class="thumbnail" href="https://mixi.jp/view_community.pl?id=1291838"><img src="https://logo-imagecluster.img.mixi.jp/photo/comm/18/38/1291838_150.gif" alt="栃木県民" /></a>
<span class="name"><a href="https://mixi.jp/view_community.pl?id=1291838">栃木県民</a>(19779)</span>
</li>
<!--/thumbnailList--></ul>
<ul class="thumbnailList col5">
<li>
<a class="thumbnail" href="https://mixi.jp/view_community.pl?id=1655472"><img src="https://logo-imagecluster.img.mixi.jp/photo/comm/54/72/1655472_202.jpg" alt="50代 集まれ!!!" /></a>
<span class="name"><a href="https://mixi.jp/view_community.pl?id=1655472">50代 集まれ!!!</a>(5839)</span>
</li>
<li>
<a class="thumbnail" href="https://mixi.jp/view_community.pl?id=3263134"><img src="https://logo-imagecluster.img.mixi.jp/photo/comm/31/34/3263134_78.jpg" alt="熟年 60代&70代の会" /></a>
<span class="name"><a href="https://mixi.jp/view_community.pl?id=3263134">熟年 60代&70代の会</a>(1377)</span>
</li>
<li>
<a class="thumbnail" href="https://mixi.jp/view_community.pl?id=3993718"><img src="https://logo-imagecluster.img.mixi.jp/photo/comm/37/18/3993718_24.jpg" alt="自衛隊 フレンドシップコミュ" /></a>
<span class="name"><a href="https://mixi.jp/view_community.pl?id=3993718">自衛隊 フレンドシップコミュ</a>(6183)</span>
</li>
<li>
<a class="thumbnail" href="https://mixi.jp/view_community.pl?id=971801"><img src="https://logo-imagecluster.img.mixi.jp/photo/comm/18/1/971801_94.jpg" alt="お洒落な女の子が好き" /></a>
<span class="name"><a href="https://mixi.jp/view_community.pl?id=971801">お洒落な女の子が好き</a>(84856)</span>
</li>
<li>
<a class="thumbnail" href="https://mixi.jp/view_community.pl?id=6344436"><img src="https://logo-imagecluster.img.mixi.jp/photo/comm/44/36/6344436_246.png" alt="西武ライオンズファン集いの場所" /></a>
<span class="name"><a href="https://mixi.jp/view_community.pl?id=6344436">西武ライオンズファン集いの場所</a>(95)</span>
</li>
<!--/thumbnailList--></ul>
<!--/communityContent--></div>
<div class="sectionHeader">
<h2 class="game">mixiゲーム</h2>
<p><a href="https://mixi.jp/search_game.pl">mixiゲームへ</a></p>
<!--/sectionHeader--></div>
<div class="gameContent sectionContent">
<ul class="thumbnailList col4">
<li>
<a class="thumbnail" href="http://mixi.jp/view_appli.pl?id=41803"><img src="https://logo-imagecluster.img.mixi.jp/photo/appli_logo_100k/18/3/41803_13s.jpg" alt="あやかしっくレコード" /></a>
<span class="name"><a href="http://mixi.jp/view_appli.pl?id=41803">あやかしっくレコード</a></span>
</li>
<li>
<a class="thumbnail" href="http://mixi.jp/view_appli.pl?id=21518"><img src="https://logo-imagecluster.img.mixi.jp/photo/appli_logo_100k/15/18/21518_2s.gif" alt="Webサカ" /></a>
<span class="name"><a href="http://mixi.jp/view_appli.pl?id=21518">Webサカ</a></span>
</li>
<li>
<a class="thumbnail" href="http://mixi.jp/view_appli.pl?id=40796"><img src="https://logo-imagecluster.img.mixi.jp/photo/appli_logo_100k/7/96/40796_1s.png" alt="ハッピーベジフル" /></a>
<span class="name"><a href="http://mixi.jp/view_appli.pl?id=40796">ハッピーベジフル</a></span>
</li>
<li>
<a class="thumbnail" href="http://mixi.jp/view_appli.pl?id=6598"><img src="https://logo-imagecluster.img.mixi.jp/photo/appli_logo_100k/65/98/6598_63s.jpg" alt="ブラウザ三国志 for mixi" /></a>
<span class="name"><a href="http://mixi.jp/view_appli.pl?id=6598">ブラウザ三国志 for mixi</a></span>
</li>
<!--/thumbnailList--></ul>
<ul class="thumbnailList col5">
<li>
<a class="thumbnail" href="http://mixi.jp/view_appli.pl?id=41681"><img src="https://logo-imagecluster.img.mixi.jp/photo/appli_logo_100k/16/81/41681_89s.jpg" alt="騎士と翼のフロンティア" /></a>
<span class="name"><a href="http://mixi.jp/view_appli.pl?id=41681">騎士と翼のフロンティア</a></span>
</li>
<li>
<a class="thumbnail" href="http://mixi.jp/view_appli.pl?id=32291"><img src="https://logo-imagecluster.img.mixi.jp/photo/appli_logo_100k/22/91/32291_253s.jpg" alt="英雄クロニクル" /></a>
<span class="name"><a href="http://mixi.jp/view_appli.pl?id=32291">英雄クロニクル</a></span>
</li>
<li>
<a class="thumbnail" href="http://mixi.jp/view_appli.pl?id=41508"><img src="https://logo-imagecluster.img.mixi.jp/photo/appli_logo_100k/15/8/41508_17s.jpg" alt="キャンディ・バレー" /></a>
<span class="name"><a href="http://mixi.jp/view_appli.pl?id=41508">キャンディ・バレー</a></span>
</li>
<li>
<a class="thumbnail" href="http://mixi.jp/view_appli.pl?id=41334"><img src="https://logo-imagecluster.img.mixi.jp/photo/appli_logo_100k/13/34/41334_126s.jpg" alt="りっく☆じあ~す" /></a>
<span class="name"><a href="http://mixi.jp/view_appli.pl?id=41334">りっく☆じあ~す</a></span>
</li>
<li>
<a class="thumbnail" href="http://mixi.jp/view_appli.pl?id=40413"><img src="https://logo-imagecluster.img.mixi.jp/photo/appli_logo_100k/4/13/40413_247s.jpg" alt="楽園生活 ひつじ村" /></a>
<span class="name"><a href="http://mixi.jp/view_appli.pl?id=40413">楽園生活 ひつじ村</a></span>
</li>
<!--/thumbnailList--></ul>
<!--/gameContent--></div>
<!--/bodyMain--></div>
<div id="bodySub" class="FRAME2016_bodySub">
<div class="PORTAL_loginForm sideSection">
<h2 class="PORTAL_loginForm__title">mixiに新規登録・ログイン</h2>
<p class="PORTAL_loginForm__register"><a href="https://mixi.jp/register.pl?from=login0_form" class="PORTAL_loginForm__button PORTAL_loginForm__button--register">新規登録はこちら!<span class="PORTAL_loginForm__registerFreeText">(無料)</span></a></p>
<div class="PORTAL_loginForm__inner">
<form
action="https://mixi.jp/login.pl?from=login0"
method="post"
name="login_form"
class="widget"
data-widget-namespace="jp.mixi.ui.form.widget.recaptcha.v3"
data-token-field-name="recaptcha_v3_token"
data-action-name="login"
>
<input type="hidden" value="/" name="next_url" />
<input type="hidden" value="fa51a9e9d90d556abf5222488ff6a4eb" name="post_key" />
<input type="hidden" value="" name="postkey" />
<p class="PORTAL_loginForm__inputTextBlock">
<label class="PORTAL_loginForm__inputLabel02">
<span class="PORTAL_loginForm__inputLabelFace">ログインメールアドレス</span>
<input type="text" value="" name="email" size="30" tabindex="1" class="PORTAL_loginForm__inputText widget" data-widget-namespace="jp.mixi.ui.form.widget.email.normalize" />
</label>
</p>
<p class="PORTAL_loginForm__inputTextBlock">
<label class="PORTAL_loginForm__inputLabel02">
<span class="PORTAL_loginForm__inputLabelFace">パスワード</span>
<input type="password" name="password" size="30" tabindex="2" class="PORTAL_loginForm__inputText" />
</label>
</p>
<p class="PORTAL_loginForm__inputBlock"><input type="checkbox" checked="checked" id="auto" name="sticky" tabindex="3" class="PORTAL_loginForm__inputCheckBox"><label for="auto" class="PORTAL_loginForm__inputLabel">次回から自動的にログイン</label></p>
<p class="PORTAL_loginForm__textBlock">
<a href="https://mixi.jp/guide_login_failed.pl">ログインでお困りの方はこちら</a><br />
<a href="https://mixi.jp/help.pl?mode=item&item=1359">画像選択の画面が表示されたら?</a>
</p>
<p class="PORTAL_loginForm__buttonBlock"><input type="submit" value="ログイン" tabindex="4" class="PORTAL_loginForm__button PORTAL_loginForm__button--gold"></p>
<p class="PORTAL_loginForm__orText">─ または ─</p>
<p class="PORTAL_loginForm__buttonBlock"><a href="https://mixi.jp/twitter_redirect.pl?next_url=%2F&mode=login" class="PORTAL_loginForm__button PORTAL_loginForm__button--twitter">Twitterでログイン</a></p>
</form>
</div>
<script type="text/javascript">
if (window === top) { document.login_form.email.focus(); }
</script>
</div>
<div class="adArea02 sideSection MXARIA2018_ad01" role="complementary" aria-label="広告">
<div class="ad" aria-hidden="true">
<div class="adMain">
<div id="div-gpt-ad-1478851098327-0"
class="adsbygoogle square_rectangle_lrectangle widget"
data-widget-namespace="jp.mixi.adnetwork.google.dfp.widget"
data-image-size="250x250,300x250,336x280"
data-ad-area-name="portal_right_middle"
data-ad-channel="PC_portal_right_middle"
data-ad-client="421814808"
data-adnetwork-type="doubleclick_for_publishers"
data-ad-slot="div-gpt-ad-1478851098327-0"
data-key-value="view=pc&scriptPath=home.pl&is_game=0&ut=0&protocol=https&is_login=0&is_ad_disabled=0&env=production"
>
</div>
</div>
</div>
<!--/adArea02--></div>
<div class="recommendWord sideSection"><h2>おすすめmixiワード</h2><div class="contents"><ul><li><a href="http://mixi.jp/word/k/%E3%83%98%E3%82%A2%E3%82%A2%E3%83%AC%E3%83%B3%E3%82%B8">ヘアアレンジ</a></li><li><a href="http://mixi.jp/word/k/%E6%98%A0%E7%94%BB">映画</a></li><li><a href="http://mixi.jp/word/k/%E3%82%AD%E3%83%A3%E3%83%83%E3%83%88%E3%82%BF%E3%83%AF%E3%83%BC">キャットタワー</a></li><li><a href="http://mixi.jp/word/k/%E6%98%9F%E5%BA%A7%E5%8D%A0%E3%81%84">星座占い</a></li><li><a href="http://mixi.jp/word/k/%E5%90%8C%E5%B9%B4%E4%BB%A3">同年代</a></li><li><a href="http://mixi.jp/word/k/%E8%A1%97%E3%82%B3%E3%83%B3">街コン</a></li><li><a href="http://mixi.jp/word/k/%E3%82%AB%E3%83%A9%E3%82%AA%E3%82%B1">カラオケ</a></li><li><a href="http://mixi.jp/word/k/%E3%82%B2%E3%83%BC%E3%83%A0">ゲーム</a></li><li><a href="http://mixi.jp/word/k/%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E4%B8%89%E5%9B%BD%E5%BF%97%20for%20mixi">ブラウザ三国志 for mixi</a></li><li><a href="http://mixi.jp/word/k/%E6%88%A6%E5%9B%BD%E3%82%B5%E3%83%BC%E3%82%AC">戦国サーガ</a></li></ul></div><!--/recommendWord--></div>
<div class="mixiService sideSection">
<h2>mixiのサービス</h2>
<div class="contents">
<ul>
<li class="community"><a href="https://mixi.jp/search_community.pl">mixiコミュニティ</a></li>
<li class="news"><a href="https://news.mixi.jp/">mixiニュース</a></li>
<li class="game"><a href="https://mixi.jp/search_game.pl">mixiゲーム</a></li>
<li class="word"><a href="http://mixi.jp/word/">mixiワード</a></li>
<li class="event"><a href="https://mixi.jp/event/">イベント</a></li>
</ul>
</div>
<!--/mixiService--></div>
<!--/bodySub--></div>
<!--/bodyArea--></div>
<div id="footer" class="FRAME2016_footer MXARIA2018_footer01" role="contentinfo">
<div class="COMMONDOC_footerNav COMMONDOC_footerNav--typeLogout COMMONDOC_footerNav--typePortal"><!--
--><ul class="COMMONDOC_footerNavGroup COMMONDOC_footerNavGroup--isLinkToMixiImportant"><!--
--><li class="COMMONDOC_footerNavItem"><a href="https://sns.mixi.co.jp/service.html">mixiについて</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="https://mixi.jp/rules.pl">利用規約</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="https://mixi.jp/inquiry.pl">お問い合わせ</a></li><!--
--></ul>
<!--
--><ul class="COMMONDOC_footerNavGroup COMMONDOC_footerNavGroup--isLinkToMixiProducts"><!--
--><li class="COMMONDOC_footerNavItem"><a href="https://mixi.jp/search_game.pl" target="_blank">mixiゲーム</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="https://mixi.jp/search_community.pl" target="_blank">mixiコミュニティ</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="https://mixi.jp/event/" target="_blank">イベント</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="https://news.mixi.jp/" target="_blank">mixiニュース</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://page.mixi.jp/" target="_blank">mixiページ</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://mixi.jp/word/" target="_blank">mixiワード</a></li><!--
--></ul>
<!--
--><ul class="COMMONDOC_footerNavGroup COMMONDOC_footerNavGroup--isLinkToCommunities"><!--
--></ul>
<!--
--><ul class="COMMONDOC_footerNavGroup COMMONDOC_footerNavGroup--isLinkToOurProducts"><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://www.monster-strike.com/" target="_blank">モンスト</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="https://mitene.us/" target="_blank">子供の写真・動画を共有</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://minimodel.jp/" target="_blank">美容室予約</a></li><!--
--></ul><!--
--><ul class="COMMONDOC_footerNavGroup COMMONDOC_footerNavGroup--isLinkToMixiEfforts"><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://mixi.co.jp/" target="_blank">運営会社</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://mixi.co.jp/privacy/" target="_blank">プライバシーポリシー</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://mixi.co.jp/csr/kenzen/mixi/safety01/" target="_blank">健全化の取り組み</a></li><!--
--></ul><!--
--><ul class="COMMONDOC_footerNavGroup COMMONDOC_footerNavGroup--isLinkToMixiOthers"><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://developer.mixi.co.jp/?from=footer" target="_blank">開発者向け情報</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://mixi.co.jp/recruit/" target="_blank">人材募集</a></li><!--
--><li class="COMMONDOC_footerNavItem"><a href="http://www.find-job.net/" target="_blank">転職サイト</a></li><!--
--></ul><!--
--><!-- /COMMONDOC_footerNav --></div>
<p class="copyright">Copyright (C) 1999-2020 mixi, Inc. All rights reserved.</p>
<!--/footer--></div>
<!--/page--></div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
});
</script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/lib/jquery-1.7.1.min-noconflict-compress.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/build/co-mixi.production.js?1592552090" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/build/mixi-model.production.js?1592552073" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/build/mixi-ui.production.js?1592552073" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/build/mixi-analysis.production.js?1592552073" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/build/mixi-menu.pc.production.js?1592552073" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/lib/prototype/replacer_for_array_prototype.js?1514732400" crossorigin="anonymous"></script>
<script type="text/javascript" charset="UTF-8" src="https://script.mixi.net/static/js/build/mixi-adnetwork.production.js?1592552073" crossorigin="anonymous"></script>
<script type="text/javascript">
<!--//<![CDATA[
if( this.IS_STARTED_ENTRY_POINT ){
alert("already loaded");
}
this.IS_STARTED_ENTRY_POINT = true;
Namespace.use('brook.widget bindAllWidget').apply(function (ns) {
ns.bindAllWidget.run();
});
//]]>--></script>
</body>
</html>

View File

@ -0,0 +1,3 @@
mixi(ミクシィ)は、友人・知人とのコミュニケーションをさらに便利に楽しくするSNSというサービスです。
友人とコミュニケーションを楽しもう!
mixi(ミクシィ)は、日記、写真共有、ゲームや便利ツール満載のアプリなど、さまざまなサービスで友人・知人とのコミュニケーションをさらに便利に楽しくする、日本最大規模のソーシャル・ネットワーキングサービスです。

1713
main/tests/data/euc-kr.html Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
쇼핑몰핫딜, 쿠폰 및 이벤트, 사용기, 휴대폰 등 쇼핑 정보 제공
사람이 좋아 함께하는 곳... 뽐뿌! 쇼핑특가, 휴대폰 정보의 중심지
뽐뿌
뽐뿌 - 사람이 좋아 함께하는 곳
'결백' 박스오피스 선두 탈환…50만명 돌파
'편의점 샛별이' 지창욱, 과거 김유정의 첫키스 상대였다...
'백파더' 백종원 "농산물 생산·음식 판매자들에게 도움
[내가 본 '조진웅'] '시간' 초과, '사람 냄새' 초과
[TF인터뷰] 낯선 시리즈, 더 낯선 춤, 그래서 솔루션
[TF씨네리뷰] '남자들'의 공놀이, '야구소녀'의 너클

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,20 @@
価格.com - 「買ってよかった」をすべてのひとに。
「買ってよかった!」と思えるお買い物は価格.comから パソコンや家電から、ファッション、食品に至るまで、あらゆる製品・サービスを、販売価格やクチコミ情報、ランキングなどの視点から比較・検討できる、お買い物支援サイトです。
価格.com,価格,比較,値段,クチコミ,評価,ショッピング
在宅勤務に便利Wi-Fiレンタル比較
複数の中古車サイトをまとめて検索
約30社のカードローンを徹底比較
ノートパソコン
タブレット
ハードディスク
PCパーツ
周辺機器
家電
テレビ
オーディオ
生活・調理家電
健康・美容家電
>冷房器具

View File

@ -0,0 +1,65 @@
package com.google.refine.importing;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import java.io.File;
import java.io.IOException;
import org.testng.annotations.Test;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.refine.util.JSONUtilities;
import com.google.refine.util.ParsingUtilities;
public class EncodingGuesserTests {
// Guessing isn't as reliable for single-byte encodings, so we focus on a few multi-byte
// non-UTF8 encodings which are still in use (but <1% prevalence on web)
static String[] ENCODINGS = {
"big5",
"euc-jp",
"euc-kr",
"shift_jis",
};
private static File getTestDir() {
String dir = ClassLoader.getSystemResource(ENCODINGS[0] + ".html").getPath();
dir = dir.substring(0, dir.lastIndexOf('/'));
return new File(dir);
}
public class ImportingJobStub extends ImportingJob {
public ImportingJobStub() {
super(1, getTestDir());
}
@Override
public File getRawDataDir() {
return this.dir;
}
}
@Test
public void testEncodingGuesser() throws IOException {
for (String encoding : ENCODINGS) {
ImportingJob job = new ImportingJobStub();
ObjectNode config = job.getOrCreateDefaultConfig();
ObjectNode filesObj = ParsingUtilities.evaluateJsonStringToObjectNode(
String.format("{ \"files\": [ {\"location\": \"%s.txt\"}]}", encoding));
JSONUtilities.safePut(config, "retrievalRecord", filesObj);
EncodingGuesser.guess(job);
ObjectNode retrievalRecord = job.getRetrievalRecord();
assertNotNull(retrievalRecord);
ArrayNode fileRecords = JSONUtilities.getArray(retrievalRecord, "files");
assertNotNull(fileRecords);
assertEquals(fileRecords.size(), 1);
ObjectNode record = JSONUtilities.getObjectElement(fileRecords, 0);
assertEquals(JSONUtilities.getString(record, "encoding", null).toLowerCase(), encoding);
}
}
}