UTF-8文字コード

本文介绍了将Unicode字符转换为UTF-8编码的步骤,包括根据对应关系确定UTF-8的字节长度,获取编码格式,将Unicode转换为二进制,以及在不足位时填充零。
 UnicodeとUTF-8フォーマット:

対応関係

UNICODEUTF-8
0000 0000 -
0000 007F
0XXX XXXX
0000 0080 -
0000 07FF
110X XXXX
10XX XXXX
0000 0800 -
0000 FFFF
1110 XXXX
10XX XXXX
10XX XXXX
0001 0000 -
001F FFFF
1111 0XXX
10XX XXXX
10XX XXXX
10XX XXXX
0020 0000 -
03FF FFFF
1111 10XX
10XX XXXX
10XX XXXX
10XX XXXX
10XX XXXX
0400 0000 -
7FFF FFFF
1111 110X
10XX XXXX
10XX XXXX
10XX XXXX
10XX XXXX
10XX XXXX

Unicode->UTF-8の転換方法:

1.上記の表によって、対応するUTF-8フォーマットのバイト数を計算する。

2.フォーマットを取得する。

3.Unicodeをバイナリに転換する。

4.取得したフォーマットに代入する。ビットが不足の場合、0を使う。

代码: /** * 電子レジジャーナル日付管理登録。 * * @param giftList 処理対象ギフトデータリスト */ private void updateElectronicJournalDateManagement(List<GiftDo> giftList) throws BaseAppException { // システム日付の取得。 LocalDateTime systemDate = sclb0015.getSystemDate(); for (GiftDo gift : giftList) { try { String storeCode = gift.getOriginalStoreCode(); // ギフト情報取込リストの受付日時 LocalDateTime issueDateTime = gift.getIssueDatetime(); // 存在チェック:最小受付年月日時分秒を取得 LocalDateTime minReceptionDatetime = electronicJournalDateManagementDao.selectMinReceptionDateTime(storeCode); // 検索0件の場合 if (minReceptionDatetime == null) { // ログID:SCLL9030 // ログ種別:”INFO” // ログ内容:”データが0件抽出しました。: {0},{1}” // 置換文字列1:”テーブル名” // 置換文字列2:”where句の抽出条件” log.info(Sclb0001.getInstance() .getMessage(SCLL9030, new String[] { T_ELECTRONIC_POS_JOURNAL_TIME_MANAGEMENT_TABLE_NAME, WHERE_CONDITIONS + storeCode }) .getReturnMessage()); ElectronicJournalDateManagementDto dto = new ElectronicJournalDateManagementDto(); dto.setOriginalStoreCode(storeCode); // ギフト情報取込リストの受付日時 < 変数.システム日付 if (issueDateTime.isBefore(systemDate)) { dto.setIssueDatetime(issueDateTime); } else { // CURRENT_TIMESTAMP dto.setIssueDatetime(null); } electronicJournalDateManagementDao.insertElectronicJournalDateManagement(dto); } else { ElectronicJournalDateManagementDto dto = new ElectronicJournalDateManagementDto(); // ギフト情報取込リストの受付日時 < 変数.最小受付年月日時分秒 if (issueDateTime.isBefore(minReceptionDatetime)) { // ネットギフト情報取込リストの受付日時 < 変数.システム日付 if (issueDateTime.isBefore(systemDate)) { dto.setMinReceptionDatetime(issueDateTime); } else { // CURRENT_TIMESTAMP dto.setMinReceptionDatetime(null); } dto.setOriginalStoreCode(storeCode); electronicJournalDateManagementDao.updateMinReceptionDateTime(dto); } } } catch (Exception e) { // ログID:SCLL9013 // ログ種別:”ERROR” // ログ内容:”データ取得に失敗しました。: {0},{1}” // 置換文字列1:”テーブル名” // 置換文字列2:”WHERE句なし” log.error(Sclb0001.getInstance() .getMessage(SCLL9013, new String[] { T_ELECTRONIC_POS_JOURNAL_TIME_MANAGEMENT_TABLE_NAME, NONE_WHERE_CONDITIONS }) .getReturnMessage()); throw e; } } }SQL:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="jp.co.sej.ssc.sh.common.db.ElectronicJournalDateManagementDao"> <select id="selectMinReceptionDateTime" resultType="java.time.LocalDateTime" > select min_reception_datetime, max_reception_datetime from t_electronic_pos_journal_time_management where original_store_code = #{originalStoreCode} </select> <insert id="insertElectronicJournalDateManagement" parameterType="jp.co.sej.ssc.sh.common.db.fixed.ElectronicJournalDateManagementDto" > INSERT INTO t_electronic_pos_journal_time_management ( original_store_code ,min_reception_datetime ,max_reception_datetime ,update_datetime ,update_function_id ,update_person_id ,update_count ) VALUES ( #{originalStoreCode} ,COALESCE(#{issueDatetime}, CURRENT_TIMESTAMP) ,CURRENT_TIMESTAMP ,CURRENT_TIMESTAMP ,'SSHB0051' ,'SSHB0051' ,0 ) </insert> <insert id="updateMinReceptionDateTime" parameterType="jp.co.sej.ssc.sh.common.db.fixed.ElectronicJournalDateManagementDto" > UPDATE t_electronic_pos_journal_time_management SET min_reception_datetime = COALESCE(#{minReceptionDatetime}, CURRENT_TIMESTAMP) ,max_reception_datetime = CURRENT_TIMESTAMP ,update_datetime = CURRENT_TIMESTAMP ,update_function_id = 'SSHB0051' ,update_person_id = 'SSHB0051' ,update_count = update_count + 1 WHERE original_store_code = #{originalStoreCode} </insert> </mapper> 原式样:5.電子レジジャーナル日付管理登録 5-1.システム日付を取得する 取得時にはhttps://7-11ngscp.atlassian.net/wiki/x/X4uaDQ getSystemDateWithoutTimeを使用する 共通部品名称 入力パラメータ 入力値 戻り値 SCLB0015:システム日付取得 なし なし ・システム日付  型:java.time.LocalDate 取得結果を変数.システム日付に設定する 5-2.電子レジジャーナル日付管理の取得処理 ネットギフト情報取込リストのオリジナル店舗コード毎に以下SQLを繰り返し電子レジジャーナル日付管理の取得を行う SELECT 最小受付年月日時分秒 FROM 電子レジジャーナル日付管理 WHERE ネットギフト情報取込リストのオリジナル店舗コード ・エラー発生なし ◇検索0件の場合、 ・以下でログ出力する。 ログID:SCLL9030 ログ種別:”INFO” ログ内容:”データが0件抽出しました。: {0},{1}” 置換文字列1:”テーブル名” 置換文字列2:”where句の抽出条件” ◇ネットギフト情報取込リストの受付日時が、変数.システム日付よりも小さい場合 (ネットギフト情報取込リストの受付日時 < 変数.システム日付) ・以下SQLで電子レジジャーナル日付管理へ登録する INSERT INTO 電子レジジャーナル日付管理 ( オリジナル店舗コード ,最小受付年月日時分秒 ,最大受付年月日時分秒 ,更新年月日時分秒 ,更新機能ID ,更新者ID ,更新回数 ) VALUES ( ネットギフト情報取込リスト.オリジナル店舗コード ,ネットギフト情報取込リストの受付日時 ,CURRENT_TIMESTAMP ,CURRENT_TIMESTAMP ,SSHB0051 ,SSHB0051 ,0 ) ◇ネットギフト情報取込リストの受付日時が、変数.システム日付以上場合 (ネットギフト情報取込リストの受付日時 >= 変数.システム日付) ・以下SQLで電子レジジャーナル日付管理へ登録する INSERT INTO 電子レジジャーナル日付管理 ( オリジナル店舗コード ,最小受付年月日時分秒 ,最大受付年月日時分秒 ,更新年月日時分秒 ,更新機能ID ,更新者ID ,更新回数 ) VALUES ( ネットギフト情報取込リスト.オリジナル店舗コード ,CURRENT_TIMESTAMP ,CURRENT_TIMESTAMP ,CURRENT_TIMESTAMP ,SSHB0051 ,SSHB0051 ,0 ) ◇検索1件の場合、  ・取得結果を変数.最小受付年月日時分秒に設定する ◇ネットギフト情報取込リストの受付日時が、変数.最小受付年月日時分秒よりも小さい場合 (ネットギフト情報取込リストの受付日時 < 変数.最小受付年月日時分秒) ◇ネットギフト情報取込リストの受付日時が、変数.システム日付よりも小さい場合 (ネットギフト情報取込リストの受付日時 < 変数.システム日付) 以下SQLで電子レジジャーナル日付管理の最小受付年月日時分秒を更新する UPDATE 電子レジジャーナル日付管理 SET 最小受付年月日時分秒 = ネットギフト情報取込.受付日時 最大受付年月日時分秒 = CURRENT_TIMESTAMP 更新年月日時分秒 = CURRENT_TIMESTAMP 更新機能ID = SSHB0051 更新者ID = SSHB0051 更新回数 = 更新回数 + 1 WHERE ネットギフト情報取込リスト.オリジナル店舗コード ◇ネットギフト情報取込リストの受付日時が、変数.システム日付以上の場合 (ネットギフト情報取込リストの受付日時 >= 変数.システム日付) 以下SQLで電子レジジャーナル日付管理の最小受付年月日時分秒を更新する UPDATE 電子レジジャーナル日付管理 SET 最小受付年月日時分秒 = CURRENT_TIMESTAMP 最大受付年月日時分秒 = CURRENT_TIMESTAMP 更新年月日時分秒 = CURRENT_TIMESTAMP 更新機能ID = SSHB0051 更新者ID = SSHB0051 更新回数 = 更新回数 + 1 WHERE ネットギフト情報取込リスト.オリジナル店舗コード ◇それ以外の場合 5-2を繰り返す ※ネットギフト情報取込リストのオリジナル店舗コードをすべて処理完了したら後続処理に進む ◇上記以外の場合 ・以下でログ出力する。 ログID:SCLL9013 ログ種別:”ERROR” ログ内容:”データ取得に失敗しました。: {0},{1}” 置換文字列1:”テーブル名” 置換文字列2:”WHERE句なし” ・7.異常処理へ 现式样:5.電子レジジャーナル日付管理登録 5-1.システム日付を取得する 取得時にはhttps://7-11ngscp.atlassian.net/wiki/x/X4uaDQ getSystemDateWithoutTimeを使用する 共通部品名称 入力パラメータ 入力値 戻り値 SCLB0015:システム日付取得 なし なし ・システム日付  型:java.time.LocalDate 取得結果を変数.システム日付に設定する 5-2.電子レジジャーナル日付管理の取得処理 ネットギフト情報取込リストを日付管理更新フラグが'1'である要素に絞り、 オリジナル店舗コード毎に以下SQLを繰り返し電子レジジャーナル日付管理の取得を行う SELECT 最小受付年月日時分秒 最大受付年月日時分秒 FROM 電子レジジャーナル日付管理 WHERE オリジナル店舗コード = ネットギフト情報取込リスト.オリジナル店舗コード ・エラー発生なし ◇検索0件の場合、 ・以下でログ出力する。 ログID:SCLL9030 ログ種別:”INFO” ログ内容:”データが0件抽出しました。: {0},{1}” 置換文字列1:”テーブル名” 置換文字列2:”where句の抽出条件” ・以下SQLで電子レジジャーナル日付管理へ登録する INSERT INTO 電子レジジャーナル日付管理 ( オリジナル店舗コード ,最小受付年月日時分秒 ,最大受付年月日時分秒 ,更新年月日時分秒 ,更新機能ID ,更新者ID ,更新回数 ) VALUES ( ネットギフト情報取込リスト.オリジナル店舗コード ,ネットギフト情報取込リストの受付日時 , ネットギフト情報取込リストの受付日時 ,CURRENT_TIMESTAMP ,SSHB0051 ,SSHB0051 ,0 ) ◇検索1件の場合、  ・取得結果をそれぞれ変数.最小受付年月日時分秒,変数.最大受付年月日時分秒に設定する ◇ネットギフト情報取込リストの受付日時が、変数.最小受付年月日時分秒よりも小さい場合 (ネットギフト情報取込リストの受付日時 < 変数.最小受付年月日時分秒) 以下SQLで電子レジジャーナル日付管理の最小受付年月日時分秒を更新する UPDATE 電子レジジャーナル日付管理 SET 最小受付年月日時分秒 = ネットギフト情報取込.受付日時 ,更新年月日時分秒 = CURRENT_TIMESTAMP ,更新機能ID = SSHB0051 ,更新者ID = SSHB0051 ,更新回数 = 更新回数 + 1 WHERE オリジナル店舗コード = ネットギフト情報取込リスト.オリジナル店舗コード ◇ネットギフト情報取込リストの受付日時が、変数.最大受付年月日時分秒よりも大きい場合 (ネットギフト情報取込リストの受付日時 > 変数.最大受付年月日時分秒) 以下SQLで電子レジジャーナル日付管理の最大受付年月日時分秒を更新する UPDATE 電子レジジャーナル日付管理 SET 最大受付年月日時分秒 = ネットギフト情報取込.受付日時 ,更新年月日時分秒 = CURRENT_TIMESTAMP ,更新機能ID = SSHB0051 ,更新者ID = SSHB0051 ,更新回数 = 更新回数 + 1 WHERE オリジナル店舗コード = ネットギフト情報取込リスト.オリジナル店舗コード ◇それ以外の場合 5-2を繰り返す ※ネットギフト情報取込リストのオリジナル店舗コードをすべて処理完了したら後続処理に進む ◇上記以外の場合 ・以下でログ出力する。 ログID:SCLL9013 ログ種別:”ERROR” ログ内容:”データ取得に失敗しました。: {0},{1}” 置換文字列1:”テーブル名” 置換文字列2:”WHERE句なし” ・8.異常処理へ 应该怎么改
11-29
【概要】 Bitbucketに登録したPKGについてJenkinsにてビルドし、登録元のソフトとリリースするファイルが一致することを確認する。 ① JenkinsビルドJOB作成 ② CHKファイル生成 ③ ビルド後PKG比較 ④ TAG設定 【前提】 ■ベースビルド検証 制御ソフトコードおよび意匠ソフトコードのブランチが作成済みであること ■各イベントでのPKG作成 制御、意匠ともにmasterブランチに対応要件のコードが反映されていること 【手順】 ① JenkinsビルドJOB作成 対象車両のビルドJOBを作成するため、新規ジョブ作成を選択する フォルダを選択し、JOB名を入力する 作成したJOBフォルダの中で、さらにJOBを作成する 名前を入力し、フリースタイル・プロジェクトのビルドを選択する 作成されたことを確認 作成したJenkinsJOBを選択、各種項目を設定したのちパラメータ付きビルドを実行する 設定内容については、JenkinsJOB_作成参考資料シート参照 ② CHKファイル生成 ビルド完了後ワークスペースを選択し、PKGをダウンロードする PKGダウンロード後は以下のシートの530-667行目を参照 ビルド手順補足 ③ ビルド後PKG比較 →初回PKG登録時のみ実施する ダウンロード後、SVNからベースにした登録PKGを取得し比較する レポート生成を選択後、ファイル生成場所と形式(CSV)を選択する 以下のような比較結果を作成し、PKG構成ファイルおよび生成物に問題ないことを確認する Box\bxd-meter_develop_honda\01_開発\TZAA\ISB(33FA)\XX_Jenkins立ち上げ\02_PKG作成\ア大 33FA_A332_before_vs_after.xlsx 差分箇所抽出シート:PKG全体を比較し、差分および片方のみ存在するファイルについて確認する dst_配下比較結果シート:リリースしたソフト(CHKファイルや暗号化ファイル)を比較し一致することを確認する ④ TAG設定 ビルド完了後、制御ソフトおよび意匠ソフトのmasterブランチに対してTAGを設定しプッシュする タグを設定したいコミットの上で右クリックし、タグを作成を選択する 黄色の枠でTAGが生成されていることを確認する 設定したTAGをBitbucketへ反映させる ▼を選択し、タグをプッシュを選択する Bitbucketに設定したタグが反映されていることを確認する END
11-18
<%@page import="java.util.Date"%> <%@page import="java.text.SimpleDateFormat"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@ page import="jp.co.canon_soft.wp.runtime.AppContext"%> <%@ page import="java.text.SimpleDateFormat, java.util.Date, java.util.Locale, java.util.Calendar"%> <%@ page contentType="text/html; charset=UTF-8" import="org.apache.commons.lang.*" import="jakarta.servlet.http.HttpSession" import="jp.co.canon_soft.wp.runtime.util.*" import="filter.Certification" import="security.LoginCheck" import="java.util.*" import="util.StringUtil"%> <% String ctxPath = request.getContextPath(); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <link rel="stylesheet" href="<%=ctxPath%>/font-awesome/css/font-awesome.css" /> <script src="<%=AppContext.getContextPath()%>/components/searchView/script/jquery-3.7.1.min.js" type="text/javascript"></script> </head> <% Date now = new Date(); String historicalTime = StringUtil.seirekiToWareki(now, "1"); %> <body onload="setFocus()"> <style type="text/css"> /* メッセージ */ .info-icon { display: inline-block; width: 20px; height: 20px; background-image: url(../image/msg_info.gif); margin-right: 3px; } .info-text { color: blue; font-weight: bold; } .warn-icon { display: inline-block; width: 20px; height: 20px; background-image: url(../image/msg_alert.gif); margin-right: 3px; } .warn-text { color: tomato; font-weight: bold; } .errors-icon { display: inline-block; width: 20px; height: 20px; background-image: url(../image/msg_error.gif); margin-right: 3px; } .errors-text { color: red; font-weight: bold; } .topBody { background-color: #EEEEEE; text-align: center; margin: 0; padding: 0 0 20px; } .topContainerInner { text-align: left; padding: 0 30px 30px; } .topContainerInner>div:first-child { padding-left: 450px; } .topContainerInner h1 { color: #fff; background: linear-gradient(120deg, rgba(1, 62, 125, 1.00) 0%, rgba(8, 89, 171, 1.00) 100%); border: 1px solid #024D99; border-radius: 6px; font-size: 15px; font-weight: normal; line-height: 1.3; letter-spacing: 1px; padding: 9px 20px 7px 0px; margin: 20px 0 10px; position: relative; padding-left: 28px; } .topContainerInner h1::before { content: ""; display: block; position: absolute; left: 15px; top: 50%; width: 8px; height: 8px; background-color: #ED6D00; border-radius: 1px; margin: -4px 0 0 0; } .topHeaderTitle { margin: 0; padding: 18px 70px 14px; line-height: 1; color: #fff; font-weight: 500; font-size: 27px; border-top: none; border-radius: 0 0 10px 10px; display: inline-block; background: linear-gradient(180deg, rgba(1, 43, 98, 1.00) 0%, rgba(16, 72, 145, 1.00) 100%); letter-spacing: 3px; font-family: Arial, Helvetica, "sans-serif"; } .topHeaderDate { width: 159px; height: 43px; /*background-color: #f0f8ff;*/ /* 背景色 */ /*border: 0.5px solid #4682b4;*/ /* ?框 */ border-radius: 20px; display: flex; align-items: center; justify-content: center; font-family: Arial, Helvetica, "sans-serif"; /*color: #333;*/ text-align: right; margin-top: 50px; border: 1px solid #5483BA; font-size: 14px; color: #074D99; border-radius: 100px; line-height: 1; background-color: #F6F6F6; } .topHeaderDate:before { content: "\f073"; font-family: FontAwesome; margin-right: 10px; color: #EB7D42; } .login-container { width: 900px; margin: 7px auto; padding: 30px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 8px; background-color: #fff; } .login-header { text-align: center; margin-bottom: 20px; } .login-form div { margin-bottom: 6px; display: flex; align-items: center; } .login-form label { width: 120px; margin-right: 10px; text-align: right; } .login-form input[type="text"], .login-form input[type="password"] { flex: 1; padding: 10px; box-sizing: border-box; } .login-form input[type="submit"]:hover { background-color: #0056b3; } .login-message { color: red; margin-bottom: 15px; } .password { padding-left: 20px; } .okButton { border-radius: 8px; height: 50px; width: 175px; text-align: center; margin-top: 5px; margin-right: 5px; margin-bottom: 5px; margin-left: -68px; padding-right: 15px; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.25); color: #fff; font-size: 20px; background: linear-gradient(180deg, rgba(1, 62, 125, 1.00) 0%, rgba(2, 77, 153, 1.00) 100%); border: 1px solid #07336A; border-top-color: #3E70AF; border-left-color: #3E70AF; } .okButton::before { content: "\f084"; font-family: FontAwesome; margin-right: 10px; font-weight: normal; font-size: 22px; } .quitButton { border-radius: 14px; height: 50px; width: 175px; text-align: center; margin: 5px; padding-right: 15px; transition: all 0.3s; border: 1px solid #07336A; border-top-color: #3E70AF; border-left-color: #3E70AF; color: #024D99; font-size: 20px; background: linear-gradient(180deg, rgba(236, 236, 236, 1.00) 0%, rgba(246, 246, 246, 1.00) 90%); } .quitButton:before { content: "\f00d"; font-family: FontAwesome; margin-right: 10px; font-weight: normal; font-size: 22px; } .closeDialog { width: 130px; padding: 5px 8px 6px 5px; text-align: center; color: #fff; margin-right: 15px; background-color: #024d99; border: 1px solid #fff; border-radius: 6px; font-size: 15px; height: 34px; transition: background-color .3s; } .closeDialog:before { content: "\f00d"; font-family: FontAwesome; margin-right: 10px; font-weight: normal; font-size: 22px; } .okDialog { width: 130px; text-align: center; color: #fff; margin-right: 15px; background-color: #024d99; border: 1px solid #fff; border-radius: 6px; font-size: 15px; height: 34px; transition: background-color .3s; } .okDialog:before { content: "\f00c"; font-family: FontAwesome; margin-right: 10px; font-weight: normal; font-size: 22px; } .passButton { width: 115px; height: 29px; color: #024D99; background: linear-gradient(180deg, rgba(236, 236, 236, 1.00) 0%, rgba(246, 246, 246, 1.00) 90%); } .loginFormData { flex-direction: column; /*padding: 20px 10px 0;*/ margin-left: 100px; } .loginFormData dt { font-size: 20px; color: #024D99; float: left; width: 150px; padding: 20px 10px 0; } .loginFormData dd { margin: 0; padding: 10px 10px 10px 150px; } .loginFormData input { background: #FFFFFF; border: 1px solid #979797; box-shadow: inset 1px 1px 4px 0 rgba(0, 0, 0, 0.22); border-radius: 6px; font-size: 20px; height: 42px !important; width: 280px !important; padding: 0 0 0 0; } .loginFormData .ErrorMessage { padding: 1px 0; } .loginFormData.changePwData dt { width: 240px; } .loginFormData.changePwData dd { padding: 10px 10px 10px 240px; } .btnTopLogin, .btnTopQuit, .btnChangePw, .btnTopPW, .topHeaderMenu a, .btnLatestSituation, .bt_sub { -moz-transition: background-color 0.3s; -o-transition: background-color 0.3s; -webkit-transition: background-color 0.3s; transition: background-color 0.3s; width: 120px; } .btnTopLogin:hover, .btnTopPW:hover, .bt_sub:hover, .topHeaderMenu a:hover { opacity: 0.7; } /*.btnTopLogin, .btnTopPW { color: #fff; font-size: 20px; background : linear-gradient(180deg, rgba(1,62,125,1.00) 0%, rgba(2,77,153,1.00) 100%); border-top-color: #3E70AF; border-left-color: #3E70AF; } .btnTopQuit { border: 1px solid #07336A; border-top-color: #3E70AF; border-left-color: #3E70AF; color: #024D99; font-size: 20px; background : linear-gradient(180deg, rgba(236,236,236,1.00) 0%, rgba(246,246,246,1.00) 90%); } .btnTopQuit:before { content: "\f00d"; font-family: FontAwesome; margin-right: 10px; font-weight: normal; font-size: 22px; }*/ .loginFormBtn { list-style: none; margin: 20px; padding: 0; display: flex; justify-content: center; column-gap: 20px; } .loginFormBtn li { margin: 5px; } .cautionList { list-style: none; margin: 0px 0; padding: 0; font-size: 14px; color: #144D67; } .cautionList>li { margin: 0 0 0 5px; padding: 0 0 0 18px; text-indent: -18px; } /* 遮罩层样式 */ #overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 999; } /* 对话框样式 */ #dialog { display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; border: 1px solid #ccc; z-index: 1000; cursor: move; border-width: 4px; border-style: solid; border-color: #024d99; background-color: #fff; min-height: 170px; min-width: 530px; max-height: 100%; max-width: 100%; border-radius: 20px; padding-bottom: 20px; } .MessageBoxTitle { padding: 1px; text-align: left; color: #fbfff9; font-size: 14px; height: 32px; } </style> <form id="myForm" name="myPassword" action="<%=request.getContextPath()%>/servlet/PassWordServlet" method="POST"> <input type="hidden" name="action" value="dologin"> <div class="topContainerInner"> <div> <div class="topHeaderTitle">財務会計コアシステム</div> </div> <div style="text-align: right; padding-left: 1244px;"> <div class="topHeaderDate"><%=historicalTime%></div> </div> <div class="login-container"> <div class="login-header"> <div style="text-align: left;"> <h1>パスワード変更</h1> </div> </div> <dd class="ErrorMessage"> <label id="ErrMsg"></label> </dd> <dl class="loginFormData changePwData"> <dt>ユーザID</dt> <dd> <input id="userId" type="text" name="userId" maxlength="10" autocomplete="off"></input> </dd> <dt class="ErrorMessage"></dt> <dd class="ErrorMessage"> <label id="lblUserIdErrMsg" style="color: red; font-size: 8pt; padding-left: 20px"></label> </dd> <dt>旧パスワード</dt> <dd> <input id="oldPassword" type="password" name="oldPassword" maxlength="20" autocomplete="new-password"></input> </dd> <dt class="ErrorMessage"></dt> <dd class="ErrorMessage"> <label id="lblOldPassErrMsg" style="color: red; font-size: 8pt; padding-left: 20px"></label> </dd> <dt>新パスワード</dt> <dd> <input id="newPassword" type="password" name="newPassword" maxlength="20" autocomplete="new-password"></input> </dd> <dt class="ErrorMessage"></dt> <dd class="ErrorMessage"> <label id="lblNewPass1ErrMsg" style="color: red; font-size: 8pt; padding-left: 20px"></label> </dd> <dt>新パスワード(再入力)</dt> <dd> <input id="newPassword2" type="password" name="newPassword2" maxlength="20" autocomplete="new-password"></input> </dd> <dt class="ErrorMessage"></dt> <dd class="ErrorMessage"> <label id="lblNewPass2ErrMsg" style="color: red; font-size: 8pt; padding-left: 20px"></label> </dd> </dl> <svg width="100%" height="10"> <line x1="100" y1="5" x2="90%" y2="5" stroke="black" stroke-width="0.5" stroke-dasharray="5,1" /> </svg> <div class="topContainerCaution"> <ul class="cautionList" style="margin-left: 100px;"> <li>※パスワード変更に関する注意<br> ・パスワードは、8文字以上、10文字以内で入力してください。<br> ・パスワードに使用できる文字種: 「半角英大文字」 「半角英小文字」 「半角数字」 「記号」<br> ・パスワードに使用できる記号は、次の文字になります。<br>    記号: ` ~ ! @ # $ % ^ & * ( ) _ - + = { } [ ] \ | : ; " ' < > , . ? / 及び 半角スペース<br> ・新パスワードに、変更前(旧パスワード)及び前回の変更前と同じパスワードを設定することはできません。<br> ・入力文字は次の要素を全て満たして下さい。<br> ①半角英字含める(大文字文字を混在させる)<br> ②アラビア数字を含める<br> ③特殊文字を含める 特殊文字: ! " # $ % & ' ( ) - = ^ ~ \ | @ [ { ] } ; + : * , < . > / ? _<br> ④ログイン名/名前は含めない<br> ・パスワードは、生年月日や家族の名前、ありふれた文字の連続等、推測の容易な内容を使用しないで下さい。<br> ・パスワードは本人のみが知り得る情報である必要があります。<br> ・個人で利用しているアカウント等のパスワードと、同じ内容は利用しないで下さい。<br> </li> </ul> </div> <div class="loginFormBtn"> <div class="btnTopLogin"> <button type="button" class="okButton" onclick="openDialog()">OK</button> </div> <!-- 遮罩层 --> <div id="overlay"></div> <!-- 对话框 --> <div id="dialog"> <div class="MessageBoxTitle" style="cursor: move;"> <td colspan="2"><span id="MessageBox_lblTitle" style="padding-left: 13px; display: block; width: 100%; color: blue;"> </span></td> </div> <div> <p>パスワードを変更しても宜しいですか。</p> </div> <button type="button" class="okDialog" onclick="okDialog()" style="position: absolute; bottom: 0; left: 40%; transform: translateX(-50%); margin-right: 10px;">はい</button> <button type="button" class="closeDialog" onclick="closeDialog()" style="position: absolute; bottom: 0; left: 40%; transform: translateX(50%);">いいえ</button> </div> <div class="btnTopQuit"> <button type="button" class="quitButton" onclick="buttonQUITPage()">QUIT</button> </div> </div> <div style="width: 100%; display: flex;"> <div style="width: 50%; text-align: left; margin-left: 50px; font-size: 12px"> Ver.1.0.1</div> <div style="padding-left: 258px; font-size: 12px"> 画面ID:CMP010DI</div> </div> </div> </div> </form> <script type="text/javascript"> $(document).ready(function() { var msg = '<%=request.getAttribute("error")%>'; if(msg!=null && msg.trim().length > 0){ var json = JSON.parse(msg); if(json.msg){ if(json.msg[0] == '認証成功'){ buttonQUITPage() }else{ var html = ""; json.msg.forEach(item=>{ html += item + '<br>' }) $("#ErrMsg").html(html) $("#ErrMsg").css("color","red") } } if(json.lblUserIdErrMsg||json.lblOldPassErrMsg){ if(json.lblUserIdErrMsg){ $("#lblUserIdErrMsg").text(json.lblUserIdErrMsg[0]) $("#userId").css("background-color","red") } if(json.lblOldPassErrMsg){ $("#lblOldPassErrMsg").text(json.lblOldPassErrMsg[0]) $("#oldPassword").css("background-color","red") } }else if(json.lblNewPass1ErrMsg||json.lblNewPass2ErrMsg){ if(json.lblNewPass1ErrMsg){ $("#lblNewPass1ErrMsg").text(json.lblNewPass1ErrMsg[0]) $("#newPassword").css("background-color","red") } if(json.lblNewPass2ErrMsg){ $("#lblNewPass2ErrMsg").text(json.lblNewPass2ErrMsg[0]) $("#newPassword2").css("background-color","red") } } } }); function setFocus() { document.getElementById("userId").focus(); } function buttonQUITPage() { window.location.href = "/FinancialCoreSystem/page/login.jsp"; } function openDialog() { // 显示遮罩层 document.getElementById('overlay').style.display = 'block'; // 显示对话框 document.getElementById('dialog').style.display = 'block'; } function closeDialog() { // 隐藏遮罩层 document.getElementById('overlay').style.display = 'none'; // 隐藏对话框 document.getElementById('dialog').style.display = 'none'; } // 实现对话框可移动 let isDragging = false; let offsetX, offsetY; const dialog = document.getElementById('dialog'); dialog.addEventListener('mousedown', (e) => { isDragging = true; offsetX = e.clientX - dialog.offsetLeft; offsetY = e.clientY - dialog.offsetTop; }); document.addEventListener('mousemove', (e) => { if (isDragging) { dialog.style.left = (e.clientX - offsetX) + 'px'; dialog.style.top = (e.clientY - offsetY) + 'px'; } }); document.addEventListener('mouseup', () => { isDragging = false; }); function okDialog() { document.querySelector('.okDialog').addEventListener('click', function() { document.getElementById('myForm').submit(); }); } </script> </body> </html>加工这个代码实现
09-13
跟网型逆变器小干扰稳定性分析与控制策略优化研究(Simulink仿真实现)内容概要:本文围绕跟网型逆变器的小干扰稳定性展开分析,重点研究其在电力系统中的动态响应特性及控制策略优化问题。通过构建基于Simulink的仿真模型,对逆变器在不同工况下的小信号稳定性进行建模与分析,识别系统可能存在的振荡风险,并提出相应的控制优化方法以提升系统稳定性和动态性能。研究内容涵盖数学建模、稳定性判据分析、控制器设计与参数优化,并结合仿真验证所提策略的有效性,为新能源并网系统的稳定运行提供理论支持和技术参考。; 适合人群:具备电力电子、自动控制或电力系统相关背景,熟悉Matlab/Simulink仿真工具,从事新能源并网、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 分析跟网型逆变器在弱电网条件下的小干扰稳定性问题;② 设计并优化逆变器外环与内环控制器以提升系统阻尼特性;③ 利用Simulink搭建仿真模型验证理论分析与控制策略的有效性;④ 支持科研论文撰写、课题研究或工程项目中的稳定性评估与改进。; 阅读建议:建议读者结合文中提供的Simulink仿真模型,深入理解状态空间建模、特征值分析及控制器设计过程,重点关注控制参数变化对系统极点分布的影响,并通过动手仿真加深对小干扰稳定性机理的认识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值